我是 Lua 的新手,我下載并想使用此鏈接中的 class.lua 檔案。但是,當我嘗試從任何地方呼叫 Board:addSign 函式時,無論我做什么,傳遞的引數都是 place 變數和 nil 的值,而不是 sign 和 place 變數的值。我將如何解決這個問題?
這是我的代碼,包括主要代碼和類本身。
Class = require 'class'
require 'Board'
board = Board()
for place = 1, 9 do
print('Input sign: ')
sign = io.read()
board.addSign(sign, place)
end
Board = Class{}
function Board:init()
array = {}
for n = 1, 9 do
array[n] = ' '
end
--
self.array = array
end
function Board:addSign(sign, place)
print(sign) -- outputs whatever I passed as place
print(place) -- outputs nil no matter what
self.array[place] = sign -- crashes here since place is nil
end
uj5u.com熱心網友回復:
使用board:addSign代替board.addSign。
uj5u.com熱心網友回復:
function Board:addSign(sign, place) end
是語法糖
function Board.addSign(self, sign, place) end
這允許您 self.array[place] = sign在該函式內部執行類似操作。
因此,您定義了一個帶有 3 個引數的函式,但在呼叫它時只提供了 2 個。
board.addSign(sign, place)
在你的函式中,基本上導致
local self = sign
local sign = place
local place = nil
所以要么打電話Board:addSign(sign, place)要么Board.addSign(Board, sign, place)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396925.html
