Bir kod bloğu veya blok, yeni bir kapsamlı gövde sunan sıfır veya daha fazla ifadeden oluşan bir gruptur. (Sıfır ifade içeren bir blok boş bir bloktur ve ideal olarak sadece daha sonra doldurulmak üzere bir yer tutucu olarak kullanılır).
Kod blokları sadece tanımlayıcılardan sonra görülebilir.
Kapsam, bir tanımlayıcının (ad) bir değer ile ilişkilendirilmesinin geçerli olduğu ve bu adın değere başvurmak için kullanılabileceği program bölümünü ifade eder. Örneğin, bir kod bloğu içinde oluşturduğun sabitler veya değişkenler sadece kod bloğu bağlamında var olur. Bu da objelerin yaşam süresinin oluşturuldukları kapsamla sınırlı oldukları ve bu kod bloğunun dışında kullanılamayacakları anlamına gelir.
Aşağıdaki örnekte oyuncunun sahip olduğu para sayısı ile satın alınabilecek en fazla ok sayısının nasıl hesaplanacağı gösterilmektedir. MaxArrowsYouCanBuy
sabiti if
bloğu içinde oluşturulur ve bu nedenle kapsamı if
bloğu ile sınırlıdır. MaxArrowsYouCanBuy
sabiti yazdırma dizesinde kullanıldığında MaxArrowsYouCanBuy
adı if
ifadesinin dışındaki kapsamda mevcut olmadığından bir hata üretir.
CoinsPerQuiver : int = 100
ArrowsPerQuiver : int = 15
var Coins : int = 225
if (MaxQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
MaxArrowsYouCanBuy : int = MaxQuiversYouCanBuy * ArrowsPerQuiver
Print("Paralarınla en fazla {MaxArrowsYouCanBuy} ok satın alabilirsin.") # Hata: Bilinmeyen Tanımlayıcı MaxArrowsYouCanBuy
Verse farklı bir kapsamda bildirilmiş olsa da bir tanımlayıcıyı yeniden kullanmayı desteklemez. Bunun istisnası, tanımlayıcının önüne (qualifying_scope:)
ekleyerek tanımlayıcıyı uygun hale getirmektir. Burada qualifying_scope
, tanımlayıcının modül, sınıf veya arayüzünün adıdır. Tanımlayıcıyı tanımlayıp kullandığın durumlarda bir niteleyiciyi de tanımlayıcıya eklemen gerekir.
Daha fazla bilgi için modül, sınıf ve arayüz bölümlerine bak.
Kod Bloğu Formatları
Kod bloklarının Verse’te üç olası formatı vardır. Tümü [semantik olarak] (verse-glossary#semantics) eşdeğerdir, bu nedenle bir kod bloğunun stilini ne yaptığını değiştirmeden değiştirebilirsin.
Bir kod bloğunu başka bir kod bloğunun içine yerleştirirsen, iç içe geçmiş kod bloğunun başında yine de bir tanımlayıcı kullanman gerekir. Kodu iç içe yerleştirmek için blok ifadesini kullan.
Aralıklı Format
Bu formatta blok :
ile başlar ve ardından gelen her ifade kendi satırında yer alır. Her satır eşit olarak dört boşluk içeri girintilidir.
if (test-arg-block):
expression1
expression2
if (test-arg-block)
ifadesinin bloğun bir parçası olmadığını, ancak bloğun o satırın sonunda :
ile başladığına dikkat et.
Ayrıca, tek bir satırda birden fazla ifadeyi ayırmak için ;
kullanabilirsin.
Çok Satırlı Parantezli Format
Blok {}
ile çevrelenir ve ifadeler yeni satırlarda yer alır.
if (test-arg-block)
{
expression1
expression2
}
Ayrıca, tek bir satırda birden fazla ifadeyi ayırmak için ;
kullanabilirsin.
Tek Satırlı Nokta Formatı
Bu formatta, blok .
ile başlar ve her ifade aynı satırda yer alır. Her ifade yeni bir satıra yerleştirilmek yerine birbirinden ;
ile ayrılır.
if (test-arg-block). expression1; expression2
Bir else
içeren if
ifadesinde tek satırlı nokta formatını kullanırsan, else
ifadesinden önce sadece bir ifade olabilir. Örneğin:
if (test-arg-block). expression1 else. expression2