[解決済み] Lua スクリプトがエラー "nil値(フィールド 'deposit')を呼び出そうとした" をスローします。
2022-02-17 19:09:58
質問事項
このLuaスクリプトは、新しいクラスを作成し、インスタンスを作成し、関数を呼び出すことになっているのですが、実際にメソッドを呼び出すとエラーが発生するんです。
Account = {
balance = 0,
new = function(self,o)
o = o or {}
setmetatable(o,self)
self.__index = self
return o
end,
deposit = function(self,money)
self.balance = self.balance + money
end,
withdraw = function(self,money)
self.balance = self.balance - money
end
}
new_account = Account.new()
print(new_account.balance)
new_account.deposit(23)
new_account.deposit(1)
print(new_account.balance)
このエラーを出し続けています。
attempt to call a nil value (field 'deposit')
このように動作するようです。
Account = {
balance = 0,
}
function Account:new(o)
o = o or {}
setmetatable(o,self)
self.__index = self
return o
end
function Account:deposit(money)
self.balance = self.balance + money
end
function Account:withdraw(money)
self.balance = self.balance - money
end
function Account:get_balance()
return self.balance
end
acc = Account:new({})
print(acc.balance)
acc:deposit(1920)
print(acc:get_balance())
何が間違っているのか分からないようです。もしかして、':' 演算子しか使えないのでしょうか?
解決方法は?
そうです。
:
を使用してメソッドを呼び出すことができます。
new_account = Account:new()
print(new_account.balance)
new_account:deposit(23)
new_account:deposit(1)
print(new_account.balance)
Account:new()
は砂糖です。
Account.new(Account)
など。
関連
-
[解決済み] Lua スクリプトがエラー "nil値(フィールド 'deposit')を呼び出そうとした" をスローします。
-
[解決済み] 関数型プログラミング言語と命令型プログラミング言語の違いは何ですか?
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み】UMLの矢印の説明
-
[解決済み】Goのコンストラクタ
-
[解決済み】アスペクト指向プログラミングとオブジェクト指向プログラミングの比較
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み】オブジェクト指向のパラダイムにおける疎結合と密結合の違いは何ですか?
-
[解決済み】OOP vs Functional Programming vs Procedural [クローズド]。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Lua スクリプトがエラー "nil値(フィールド 'deposit')を呼び出そうとした" をスローします。
-
[解決済み] 関数型プログラミング言語と命令型プログラミング言語の違いは何ですか?
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み】UMLの矢印の説明
-
[解決済み】Goのコンストラクタ
-
[解決済み】アスペクト指向プログラミングとオブジェクト指向プログラミングの比較
-
[解決済み】オブジェクト指向のパラダイムにおける疎結合と密結合の違いは何ですか?
-
[解決済み】OOP vs Functional Programming vs Procedural [クローズド]。