【问题标题】:Arguments not properly passed to function参数未正确传递给函数
【发布时间】:2022-01-25 05:41:40
【问题描述】:

我是 Lua 新手,我从 this link 下载并想使用 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

【问题讨论】:

标签: function class lua


【解决方案1】:
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)

【讨论】:

  • 我认为是这样的,但不能完全确定问题到底出在哪里。非常感谢您的澄清,我很感激!
【解决方案2】:

使用board:addSign 代替board.addSign

【讨论】:

    猜你喜欢
    • 2012-10-19
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多