Katmanya · Bestiyer

Sıfır Treni

array

Gözlü, gülümseyen küçük bir lokomotif ve arkasında numaralı vagonlar. Lokomotifin hemen arkasındaki ilk vagonun numarası 1 değil, 0’dır.

İki anlatım

Başlangıç

Bilgisayar birden çok şeyi sırayla saklamak istediğinde Sıfır Treni’ni çağırır. Her vagona bir şey konur ve vagonların numarası vardır.

Tuhaf olan şu: ilk vagonun numarası 0. Beş vagonlu bir trenin son vagonu 4 numaradır.

Örümceğin ipinin tersine, trenin vagonları değiştirilebilir, eklenebilir, çıkarılabilir.

İleri

Sıfır Treni bir dizidir (array): değerleri sıra numarasıyla tutan, numaraları 0’dan başlayan, içeriği değiştirilebilen bir liste.

Ne yapar

  • Değerleri sırayla tutar ve numarayla verir: tren[0].
  • Sona vagon ekler (push), sondan söker (pop), baştan söker (shift).
  • Kaç vagonu olduğunu söyler (length).
  • Vagonlarında farklı türden yük taşıyabilir: sayı, metin, başka bir tren.

Ne yapamaz

  • Olmayan bir vagonu gösteremez. Sorulursa hata vermez, Gelmeyen Hayalet’i (undefined) gösterir.
  • Baştan vagon sökünce numaraları sabit tutamaz: arkadaki her vagonun numarası bir azalır.

Kod karşılığı

const tren = ["a", "b", "c"];
tren[3];            // → undefined, hata yok
tren.at(-1);        // → "c"   (tren[-1] ise undefined)
tren.shift();       // tren[0] artık "b"
typeof tren;        // → "object"; diziyi tanımak için Array.isArray(tren)

İleri kurallar

  • JavaScript’te dizi bir nesnedir. Vagon numaraları aslında "0", "1" gibi adlı çekmecelerdir; length ise özel davranan bir alandır.
  • const ile tanımlanan dizi yine değişebilir: const trenin başka bir trenle değiştirilmesini engeller, vagonlarına dokunmayı engellemez.
  • Uzaktaki bir numaraya yük koymak arada boş yer bırakır: a = [1, 2]; a[5] = 9 sonrası length 6 olur, 2 ile 4 arası boş kalır. Boş yer undefined değildir: 2 in a false verir, map ve forEach deliği atlar: [1,,3].map(x => x * 2) sonucu [2, <1 empty item>, 6] olur.
  • b = tren yeni tren yapmaz; ikisi aynı trenin adıdır. Kopya için [...tren] kullanılır, yalnızca ilk kat kopyalanır.

Nerede kırılır

  • Tren ayrı bir tür değil. Anlatımda tren kendi başına bir yaratık gibi durur. Gerçekte Çekmece Kaplumbağası’nın özel bir biçimidir. Trenin altına eğilince tekerleklerin arasında kaplumbağa ayakları görünür.
  • Vagonlar yan yana dizili mi? Gerçek tren gibi vagonların bellekte yan yana durduğunu söylemiyoruz. Motor bunu çoğu zaman öyle yapar ama dil bunu garanti etmez.
  • Tren ne zaman gider? Gerçek tren elektrik kesilince durur. Bu tren çok daha önce gider: ona ulaşan son ad da kalkınca motor yerini geri alır (çöp toplama). Ne zaman alacağı bizim kontrolümüzde değildir.
  • Gerçek trenler 1’den sayar. 0’dan başlamak benzetmenin değil, kavramın kuralıdır. Bu ülkede sayma sıfırdan başlar.
Model sayfası: üç poz, üç ifade.
İlk göründüğü masal İki ev bir avlu

Nerede yaşar

Motor Dairesi’nin Öbek’inde. Öbek’in gövdesi derinde, Bellek Ovası’nda kuma yazılmış işaretlerdir.

Tren, onu gösteren bir ad kaldığı sürece Öbek’te durur. Son ad da gidince motor yerini başka işe verir, ovadaki işaretlerin üstüne yenileri yazılır. Sekme kapanınca o evin bütün trenleri birden gider.

Akrabaları