函数参数未正确传递

我新学习 Lua,并且从这个链接下载并使用了 class.lua 文件。 但是,无论我如何调用 Board:addSign 函数,传递的参数始终是 place 变量的值和 nil,而不是 sign 和 place 变量的值。我该如何解决这个问题?

这是我的代码,包括主程序和类本身。

Class = require 'class'
require 'Board'

board = Board()

for place = 1, 9 do
  print('输入标志:')
  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) -- 输出我传递的 place
  print(place) -- 无论如何都输出 nil
  self.array[place] = sign -- 在此崩溃,因为 place 是 nil
end

原文链接 https://stackoverflow.com/questions/70475469

点赞
stackoverflow用户7509065
stackoverflow用户7509065

使用 board:addSign 代替 board.addSign

2021-12-24 21:18:32
stackoverflow用户2858170
stackoverflow用户2858170
函数 `Board:addSign(sign, place)` 是语法糖,相当于:

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)

2021-12-25 08:49:10