目次
確認環境:Windows10 64bit
テーブルにキーが存在しないときメッセージを返す
__index は テーブル内に存在しないキーが参照されたときに代わりに使用されるメソッドです。
color1 = {a = "red"}
table1 = {
__index = function(table, key)
return "'" .. key .. "' does not exist"
end
}
setmetatable(color1,table1)
print(color1.a) -- red
print(color1.b) -- 'b' does not exist
__index はキーを引数として受け取り、カスタムのエラーメッセージを返します。
テーブルにキーが存在しないとき別のテーブルの値を返す
defaults = {x = 10, y = 20}
color1 = {}
setmetatable(color1, {__index = defaults})
print(color1.x) -- 10 (defaults から取得)
print(color1.y) -- 20 (defaults から取得)
print(color1.z) -- nil (defaults にもない)
3行目のcolor1は、中身が空です。
4行目は、__indexでcolors1テーブルが空のときdefaultsを参照します。
6行目は、colors1は空ですが、defaultsのxの10を表示します。
7行目は、colors1は空ですが、defaultsのyの20を表示します。
8行目は、colors1は空ですが、defaultsにもzは存在しないためnilを表示します。
関連の記事