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 gerekecektir; örneğin bir oyuncunun envanterinden bir öğe kaldırmak gerektiğinde. Luau, tablolarla kullanmak için gömülü fonksiyonlar sağlar, bu da işlemleri kolaylaştırır.

Bu makale, bir değeri nasıl arayacağınızı açıklarken, eklemek ve kaldırmak gibi tablolar için önceden tanımlanmış fonksiyonları ana hatlarıyla belirtecektir.

Bu becerileri uygulamak için, bir oyuncunun envanterini yönetmeye yardımcı olacak 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, Player veya IntValue gibi bir dize, sayı veya tam bir nesne gibi herhangi bir değer olabilir.

Pratik yapmak için, oyuncu öğelerini bir tabloda depolayacak bir betik oluşturacak ve ardından buna ekleme yapacaksınız. Bu örnek sadece bir betik olduğu için, 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, "Yatak Çantası")
    print(playerItems)
  3. Projeyi çalıştırın. Çıktı bölümünde üç noktayı ... genişletin ve yazdırılan tabloyu görün.

Dizilerden değer kaldırma

Bir değeri kaldırmak için, örneğin bir oyuncu bir öğe kullandığında veya aktif oyuncular listesinden biri deneyimi terk ettiğinde table.remove() kullanın. Sağlanan parametrelere bağlı olarak, fonksiyon ya bir tablonun son değerini ya da belirli bir indeksteki değeri 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 durumda, tek gerekli parametre, tabloyun kendisidir.

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


    playerItems = {}
    table.insert(playerItems, "İksir")
    table.insert(playerItems, "Ekmek")
    table.insert(playerItems, "Yatak Çantası")
    table.remove(playerItems)
    print(playerItems)
  2. Projeyi çalıştırın. Çıktı penceresinde, son değer olan "Yatak Çantası"nın yazdırılmadığını kontrol edin.

İndekse göre kaldırma

Dizide belirli bir noktadaki bir değeri kaldırmak için, ikinci parametreye kaldırılacak indeks olan table.remove(arrayName, 1) gibi bir değer girin.

  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, "Yatak Çantası")
    table.remove(playerItems, 1)
  2. Projeyi çalıştırın. "İksir" değerinin kaldırıldığını kontrol edin.

Dizide değer arama

Dizilerde belirli değerleri bulmak için, örneğin kazanan bir oyuncunun adını bulmak için, table.find() fonksiyonunu kullanın. Alternatif olarak, for döngüleri ve if ifadeleri kullanarak kendi arama fonksiyonunuzu da yazabilirsiniz.

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

Bir dizide bir değeri bulmak için, ilk bulduğu eşleşen değerden sonra duracak şekilde bir findValue() adında bir fonksiyon oluşturun.

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

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


    local playerItems = {
    "İksir",
    "Ekmek",
    "Ekmek",
    "Yatak Çantası"
    }
  2. İki parametre ile yeni bir findValue() fonksiyonu yazın:

    • whichArray - üzerinden arama yapılacak dizi.

    • itemName - kontrol etmek için 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 değişkeninde 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 fonksiyonunu test etmek için valueFound adında bir değişken oluşturun ve findValue() çağrısını yapın. Aranacak diziyi ve hangi değerin aranacağını geçin. Çalıştır seçeneğini kullanarak, beklenen çıktının indeks 2 olduğunu doğrulayın.


    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 .. " 'de bulunuyor.")

Bir değeri kaldırma

Eğer bir değer, arama fonksiyonu ile bulunduysa, kaldırılabilir. Bir if ifadesi ile bir değerin bulunup bulunmadığını kontrol edin.

  1. valueFound içinde bir değerin bulunup bulunmadığını kontrol edin; eğer öyleyse, değeri table.remove() ile kaldırın.


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


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

    Bu fonksiyon yalnızca bir kez çağrıldığı için, yalnızca "Ekmek"in ilk örneği kaldırılmıştır. Aşağıdaki bölüm, tüm örnekleri bulup kaldırmayı kapsayacaktır.

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

Önceki kod yalnızca bulunan bir değerin ilk örneğini kaldırabiliyorsa, bu kod parçacığı bir dizideki tüm örnekleri bulup kaldıracaktır. Örneğin, bir oyuncu oyundaki bir dükkanda tüm ekmeklerini satmak isteseydi.

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


    local playerItems = {
    "İksir",
    "Ekmek",
    "Ekmek",
    "Yatak Çantası"
    }
  2. Diziyi kontrol etmek için, playerItems üzerinden geriye dönen bir for döngüsü oluşturun ve #playerItems'dan başlayarak 1'de sona erip -1 ile artış yapın.


    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. Diziyi yazdıran ikinci bir for döngüsü eklemek için aşağıdaki kodu kullanın.


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

Özet

Değerler bir diziye eklenebilir veya kaldırılabilir, ancak bu işlemleri gerçekleştirirken indekslerin kaymasına dikkat edin. Bir değerin tüm örneklerini kaldırmak için döngüler kullanın veya sadece bulunan ilk örneği kaldırın.

return anahtar kelimesi bir döngüyü durdurmak ve gereken yerde bilgiyi geri göndermek için kullanılabilir.

Tamamlanmış bir betik sürümüne aşağıdan ulaşabilirsiniz.

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

Tüm betikler ServerScriptService içinde ve devre dışı durumdadır. 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.