Eleman Ekleme ve Okuma
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 14 / 73.
Lua tablolarını table.insert ve table.remove ile zaten büyütüp küçültüyorsunuz — her ikisi de tipli dizilerde tam olarak aynı şekilde çalışır. Aradaki fark, Luau'nun artık ne eklediğinizi kontrol etmesidir: Bir {number} dizisine bir string yazmak, çalışma zamanında kafası karışmış bir oyuncu tarafından keşfedilmek yerine siz yazarken işaretlenir.
local queue: {string} = {"save", "load"}
table.insert(queue, "quit") -- sona ekle
table.insert(queue, 1, "help") -- 1. konuma ekle, geri kalanı kaydırarak
local last = table.remove(queue) -- son elemanı kaldırır VE döndürürtable.remove(t) son elemanı çıkarır ve size geri verir; table.remove(t, 1) ilk elemanı çıkarır ve diğer her şeyi down kaydırır. Dizi {string} olarak tiplendirildiği için Luau, döndürülen değerin bir string olduğunu bilir.
Okuma işlemi normal Lua kadar esnektir: hiçbir şey içermeyen bir indeks — queue[0], queue[-1] veya #queue değerinden büyük herhangi bir şey — sessizce nil olarak değerlendirilir. Hata fırlatılmaz, bu nedenle varlığından emin olmadığınız bir değeri kullanmadan önce nil kontrolü (check) yapın.
Alet çantanız için bir araç daha: table.freeze(t) bir tabloyu çalışma zamanında salt okunur (read-only) yapar — daha sonra onu değiştirme yönündeki herhangi bir girişim hata fırlatır. Bu, oluşturulduktan sonra asla değişmemesi gereken sabit veriler (yapılandırma, sabit seviye listeleri) için Luau'nun sunduğu çözümdür.
Görev
Kolay"save" ve "load" değerleri ile başlatılmış bir queue: {string} tipli dizisi oluşturun. Ardından:
table.insertkullanarak"<code>quit" değerini sona ekleyin (append)- 1. konuma (position)
"<code>help" değerini ekleyin (insert) table.removeile son komutu çıkarın (remove) ve dönen değeri saklayın
Son olarak, her biri ayrı bir satırda olacak şekilde şunları yazdırın:
- çıkarılan komut
- geriye kaç komut kaldığı
- kuyruktaki ilk komut
queue[10]— hiçbir şey içermeyen bir yuva
Kendin dene
-- Buraya kod yazın
-- 1) kuyruk tanımla: {string} "save" ve "load" ile
-- 2) talimatlardaki tam metni ekle, talimatlardaki tam metni 1. pozisyona ekle
-- 3) son komutu kaldır, sonra dört değeri yazdır
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Luau'ya Giriş bölümündeki tüm dersler
1Luau ile Başlarken
Luau Nedir?Neden Luau Kullanılmalı?İlk Luau KodunuzTip Denetimi ve Hata ModlarıÖzet: Luau'ya Giriş4Fonksiyonlarla Çalışmak
Parametreleri ve Geri Dönüş Değerlerini TiplendirmeAnonim Fonksiyonları TiplendirmeHiçbir Şey Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriDeğişken Sayıda Parametre Alan Fonksiyonlar (Variadic)Fonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar2Temel Tipler
Temel Tipler: num, str, bool'any' Tipi: Kaçış Yolu'unknown' TipiNil ve İsteğe Bağlı (Optional) TiplerUygulamada Tip ÇıkarımıAçık Tip BelirteçleriÖzet: Temel Tipler Pratiği5Diğer Adlar (Aliases), Birleşimler, Kesişimler
İlkel Tipler için Tip Diğer Adları (Type Aliases)Birleşim Tipleri (Union Types)Birleşim Tipleri ile ÇalışmakLiteral (Sabit) TiplerKesişim Tipleri (Intersection Types)Tip Diğer Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Tipli Tablolar: Diziler ve Map'ler
Tipli DizilerEleman Ekleme ve OkumaMap Tipi Nedir?Map Bildirimi ve Map'lere ErişimTablolar Üzerinde YinelemeKarma Biçimli TablolarÇok Boyutlu Tipli Dizilertable.unpack ve VarargsÖzet: Diziler ve Map'lerKendi başına pratik yap: Online Lua derleyicisi