Dizilere değişiklik yapma

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bir dizinin içeriği genellikle değiştirilmesi gerekir; örneğin, bir oyuncunun envanterinden bir öğeyi kaldırmak gerektiğinde. Luau, tablolarla kullanmak için yerleşik işlevler sunar ve bu işlemleri kolaylaştırır.

Bu makalede, bir değeri ararken ekleme ve kaldırma gibi tablolar için önceden oluşturulmuş işlevler açıklanacaktır.

Bu becerileri uygulamak için, bir oyuncunun envanterini yönetmeye yardımcı olan bir betik oluşturacaksınız.

Dizilere değer ekleme

Bir diziye yeni bir değer eklemek için table.insert(array, valueToInsert) kullanın. İkinci parametre, bir dize, sayı veya Player veya IntValue gibi bir nesne gibi herhangi bir değer olabilir.

Pratik yapmak için, oyuncu öğelerini bir tabloda saklayan bir betik oluşturacak ve ardından buna ekleme yapacaksınız. Bu örnek sadece bir betik olduğundan, herhangi bir dosya veya projede kullanılabilir. Kodun test edilmesi Çıktı penceresi kullanılarak yapılacaktır.

  1. playerItems adında boş bir dizi oluşturun.

    playerItems = {}
  2. Diziye envanter öğeleri eklemek için table.insert() yazın. Parantez içinde, eklemek için tablo olan playerItems'ı yazın ve ardından her öğe için bir dize girin. En az üç değer ekleyin.

    playerItems = {}
    table.insert(playerItems, "İksir")
    table.insert(playerItems, "Ekmek")
    table.insert(playerItems, "Uyku Tulumu")
    print(playerItems)
  3. Projeyi çalıştırın. Çıktı penceresinde, yazdırılan tabloyu görmek için üç noktayı ... genişletin.

Dizilerden değer kaldırma

Bir değeri kaldırmak için, örneğin bir oyuncu bir öğe kullandığında veya aktif oyuncular listesindeki birisi oyundan ayrıldığında, table.remove() kullanın. Sağlanan parametrelere bağlı olarak, işlev bir tablodaki son değeri veya belirli bir indeksi kaldırabilir.

Son değeri kaldırma

Bazen bir betiğin belirli bir öğeyi kaldırması gerekir. Örneğin, bir oyuncunun envanterindeki ilk öğeyi kaldırmak veya bir listedeki ilk oyuncuyu seçmek. Bir dizideki son değeri kaldırmak için table.remove(arrayName) kullanın. Bu kullanım durumunda, tek gereken parametre tablonun kendisidir.

  1. Önceki örnekteki öğe dizisini kullanın. Ardından, tablodan son değeri kaldırmak için, bu durumda "Uyku Tulumu", table.remove(playerItems) yazın.

    playerItems = {}
    table.insert(playerItems, "İksir")
    table.insert(playerItems, "Ekmek")
    table.insert(playerItems, "Uyku Tulumu")
    table.remove(playerItems)
    print(playerItems)
  2. Projeyi çalıştırın. Çıktı penceresinde, son değer olan "Uyku Tulumu" yazdırılmamalıdır.

İndex ile kaldırma

Dizide belirli bir noktadaki bir değeri kaldırmak için, ikinci parametreye kaldırılacak indeksi girin, örneğin table.remove(arrayName, 1).

  1. Aynı tabloyu kullanarak table.remove() yazın. Parametrelerde, tablonun adını ve kaldırılacak değeri 1 girin.

    playerItems = {}
    table.insert(playerItems, "İksir")
    table.insert(playerItems, "Ekmek")
    table.insert(playerItems, "Uyku Tulumu")
    table.remove(playerItems, 1)
  2. Projeyi çalıştırın. İlk değerin, "İksir" olduğunun kaldırıldığını kontrol edin.

Dizide değer arama

Belirli değerleri dizilerde bulmak için, örneğin bir kazanan oyuncunun adını bulmak için table.find() işlevini kullanın. Alternatif olarak, for döngüleri ve if ifadeleri kullanarak kendi arama işlevinizi kodlayabilirsiniz.

Tek bir değeri bulma ve döndürme

Bir dizide bir değeri bulmak için, bir diziyi dolaşan ve eşleşen bir değer bulduğunda duracak şekilde findValue() adında bir işlev oluşturun.

Değeri bulduğunda, işlev return anahtar kelimesini kullanarak o değerin indeksini döndürecektir. Bir indeks ile, diziden kaldırabilirsiniz.

  1. Aşağıdaki playerItems adındaki diziyi kopyalayın.

    local playerItems = {
    "İksir",
    "Ekmek",
    "Ekmek",
    "Uyku Tulumu"
    }
  2. İki parametre ile findValue() adında yeni bir işlev kodlayın:

    • whichArray - arama yapılacak dizi.

    • itemName - kontrol edilecek belirli dize.

      local function findValue(whichArray, itemName)
      end
  3. findValue() içinde, dizideki herhangi bir değerin itemName ile eşleşip eşleşmediğini kontrol etmek için bir for döngüsü kullanın. Değer eşleşirse, return anahtar kelimesini kullanarak currentIndex'te bulunan değeri döndürün.

    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. Arama işlevini test etmek için valueFound adında bir değişken oluşturun ve findValue()'ı çağırın. Aranacak diziyi ve hangi değeri arayacağını geçirin. Çalıştırın kodu, beklenen çıktının indeks 2 olduğunu doğrulamak için.

    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --currentIndex'in değerini geri gönderir
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Ekmek")
    print("Değer indeks " .. valueFound .. " konumundadır.")

Bir değeri kaldırma

Eğer bir değer bulma işlevi ile bulunduysa, kaldırılabilir. Bir değerin valueFound içinde olup olmadığını kontrol edin; eğer öyleyse, değeri table.remove() ile kaldırın.

if valueFound then
table.remove(playerItems, valueFound)
end
  1. Aşağıdaki kodu kullanarak diziyi yazdırın.

    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("İndeks " .. index .. ": " .. itemString)
    end
  2. Oynatmayı test edin ve ilk "Ekmek" değerinin diziden kaldırıldığını kontrol edin. findValue()'daki ikinci parametreyi değiştirerek diğer değerleri kaldırmayı deneyin.

    Bu işlev bir kez çağrıldığı için, yalnızca "Ekmek" değerinin ilk örneği kaldırılmıştır. Aşağıdaki bölüm, tüm örnekleri bulma ve kaldırma yöntemini ele alacaktır.

Belirli bir değerin tüm örneklerini bulma ve kaldırma

Önceki kod yalnızca bulunan bir değerin ilk örneğini kaldırabiliyordu, bu kod parçası bir diziden tüm örnekleri bulup kaldıracaktır. Örneğin, bir oyuncu tüm ekmeklerini bir oyun içi dükkanda satmak istediğinde.

  1. En az dört değere ve bir dizi kopyaya sahip playerItems adında bir dizi kullanın.

    local playerItems = {
    "İksir",
    "Ekmek",
    "Ekmek",
    "Uyku Tulumu"
    }
  2. Diziyi dolaşmak için, #playerItems'den başlayarak 1'e kadar geri giden ve -1 ile artıran bir for döngüsü oluşturun.

    for index = #playerItems, 1, -1 do
    end
  3. Döngü içinde, playerItems[index] içindeki değerin "Ekmek" ile eşit olup olmadığını kontrol etmek için bir if ifadesi kullanın ve eğer öyleyse, öğeyi kaldırın.

    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Ekmek" then
    table.remove(playerItems, index)
    end
    end
  4. Aşağıdaki kodu kullanarak diziyi yazdıran ikinci bir for döngüsü ekleyin.

    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("İndeks " .. index .. ": " .. itemString)
    end
  5. Betiği çalıştırın ve "Ekmek" adındaki tüm değerlerin kaldırıldığını kontrol edin.

Özet

Değerler bir diziye eklenebilir veya kaldırılabilir, ancak bunu yaparken indekslerin kaymasına dikkat edin. Bir değerin tüm örneklerini kaldırmak veya yalnızca bulunan ilk örneği kaldırmak için döngüler kullanın.

return anahtar kelimesi bir döngüyü durdurmak ve gerektiğinde bilgi göndermek için kullanılabilir.

Aşağıda, betiğin tamamlanmış bir versiyonu referans alınabilir.

Aşağıdaki proje, bu öğreticideki tüm betikleri içermektedir. Buradan indirin.

Tüm betiklerin ServerScriptService içinde ve devre dışı olduğunu unutmayın. Bir betiği kullanmak için, özelliklerinde Devre Dışı alanını işaretini kaldırın ve Studio'yu çalıştırın.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.