Saya memiliki tabel lua yang saya gunakan sebagai hashmap, yaitu dengan kunci string:
local map = { foo = 1, bar = 2 }
Saya ingin "memunculkan" elemen tabel ini yang diidentifikasi oleh kuncinya. Ada table.remove()
metode, tetapi hanya membutuhkan indeks elemen untuk dihapus (yaitu angka) dan bukan kunci generik. Saya ingin dapat melakukannya table.remove(map, 'foo')
dan inilah cara saya menerapkannya:
function table.removekey(table, key)
local element = table[key]
table[key] = nil
return element
end
Apakah ada cara yang lebih baik untuk melakukan itu?
Jawaban:
Tidak, menyetel nilai kunci ke
nil
adalah cara yang diterima untuk menghapus item di bagian hashmap tabel. Apa yang Anda lakukan adalah standar. Namun, saya akan merekomendasikan untuk tidak menimpatable.remove()
- untuk bagian array dari sebuah tabel, fungsionalitas table.remove () default mencakup penomoran ulang indeks, yang tidak akan dilakukan oleh penimpaan Anda. Jika Anda memang ingin menambahkan fungsi Anda ketable
set fungsi, maka saya mungkin akan menamainya sepertitable.removekey()
atau semacamnya.sumber
table.removekey()
akan menjadi pilihan terbaik saya juga).table.insert
dantable.remove
ke namespace lokal jika saya sering menggunakannya, sering sebagai sesuatu sepertitinsert()
dantremove()
.