Verse modülü, yeniden dağıtılabilen ve bağımlı olunabilen atomik bir kod birimidir ve bağımlılıkları bozmadan zaman içinde gelişebilir. Diğer Verse dosyalarından kod tanımlarını kullanmak için bir modülü Verse dosyana aktarabilirsin.
Verse modülü, projenin dosya hiyerarşisindeki klasöre göre belirtilir ve modülün adı, klasörün adıdır. Dosya ile aynı klasörde bulunan tüm .verse dosyaları ilgili Verse modülünün bir parçasıdır ve modül açıkça içeri aktarılmadan modüldeki diğer Verse dosyalarında bulunan tanımlara erişebilir.
Bir modül, yolu ile tanımlanır; örneğin, /Verse.org/Verse. Verse yolları, nesneleri tanımlamak için genel bir ad alanı sağlar ve web etki alanları fikrinden yararlanır. Bu yollar kalıcı ve benzersizdir, ayrıca herhangi bir Verse programı tarafından bulunabilir.
Mevcut Verse modüllerinin listesi için Verse API Başvurusu belgesine bakabilirsin.
Diğer Verse Dosyalarından Tanımları İçeri Aktarma
Bir Verse modülünün içeriğini kullanmak için modülün yolunu kullanarak onu içeri aktarman gerekir. Örneğin, aşağıdaki kod /Verse.org/Random yoluyla tanımlanan Random modülünü içerir aktarır:
using { /Verse.org/Random }
Math modülü Verse dosyana aktarıldığında o modülün GetRandomInt()
işlevi gibi kod tanımlarını kullanabilirsin.
Bir Modüldeki Tanımların Görünürlüğü
Bir modülün ve içeriklerinin diğer Verse dosyalarındaki görünürlüğü, public
ve internal
gibi görünürlük belirleyicileri kullanılarak ayarlanır.
Varsayılan değer olarak, tanımlar iç görünürlüğe sahiptir, yani yalnızca kendi modülleri tarafından bulunabilir.
Dosya İçi Tanım
Bir projedeki klasörle tanımlanan modüllerin dışında, modüller aşağıdaki sözdizimi kullanılarak bir .verse dosyası içinde tanımlanabilir:
module1 := module:
...
Sınıflara ve işleve benzer şekilde köşeli ayraç sözdizimi de desteklenir:
module2 := module
{
...
}
Bir modül tanımı, görünürlük belirleyicileri içerir. Örneğin:
module3<public> := module:
...
Bir modülün bu yöntemle tanımlanmış varsayılan erişimi, bir klasörle tanımlanan modüllerle eşleşir: internal
.
Verse dosyasında tanımlanan bir modül, bir .verse dosyasının en üst seviyesinde bulunan herhangi bir şeyi içerebilir. Buna sabit tanımları, çeşitli tür tanımları ve diğer modül tanımları dahildir. Örneğin:
module1 := module:
module2<public> := module:
class1<public> := class {}
class2<public> := class{}
Bir modülün içeriğine, noktalı bir ad kullanılarak referans verilebilir. Örneğin, class1
sınıfına module1
dışında module1.module2.class1
olarak referans verilebilir.