如何正确使用 self 来打印本例中的字符串
How to properly use self to print the string in this example
在这个 MWE 中,我试图在 lua
中编写一个函数,当它被调用时,它会在调用该函数的字符串旁边打印一些文本。
为此,我使用 self
打印字符串,但它实际上是 returns 一个 nil
值。如何正确使用此示例中的 self
以及如何归档此类任务?
str = "Some text on the string"
function string.add()
print("Hope it prints the string besides too",self)
end
str:add()
输出如下:
Hope it prints the string besides too nil
我想要的:
Hope it prints the string besides too Some text on the string
对于您的函数,string.add(self)
等同于 string:add()
。在后一个版本中,它是字符串 class 的成员函数或方法,self
是隐式的第一个参数。这类似于Python中的classes,其中self
是每个成员函数的第一个参数。
-- Notice the self parameter.
function string.add(self)
print("Hope it prints the string besides too", self)
return
end
str = "Just some text on the string"
str:add()
附带说明一下,如果您要在调用 str:add()
时通过 C API 公开 Lua 堆栈上的项目,则 str
将是堆栈中的第一项,即索引 1
处的元素。项目按传递给函数的顺序被压入堆栈。
print("hello", "there,", "friend")
在此示例中,"hello"
是堆栈中的第一个参数,"there,"
是第二个参数,"friend"
是第三个参数。对于 add
函数——写成 str:add()
或 string.add(str)
——self
,指的是 str
,是 Lua堆叠。使用索引运算符定义成员函数,如 string.add
形式,可以提供灵活性,因为可以使用具有显式 self
的形式和具有隐式 self
.[= 的形式30=]
在这个 MWE 中,我试图在 lua
中编写一个函数,当它被调用时,它会在调用该函数的字符串旁边打印一些文本。
为此,我使用 self
打印字符串,但它实际上是 returns 一个 nil
值。如何正确使用此示例中的 self
以及如何归档此类任务?
str = "Some text on the string"
function string.add()
print("Hope it prints the string besides too",self)
end
str:add()
输出如下:
Hope it prints the string besides too nil
我想要的:
Hope it prints the string besides too Some text on the string
对于您的函数,string.add(self)
等同于 string:add()
。在后一个版本中,它是字符串 class 的成员函数或方法,self
是隐式的第一个参数。这类似于Python中的classes,其中self
是每个成员函数的第一个参数。
-- Notice the self parameter.
function string.add(self)
print("Hope it prints the string besides too", self)
return
end
str = "Just some text on the string"
str:add()
附带说明一下,如果您要在调用 str:add()
时通过 C API 公开 Lua 堆栈上的项目,则 str
将是堆栈中的第一项,即索引 1
处的元素。项目按传递给函数的顺序被压入堆栈。
print("hello", "there,", "friend")
在此示例中,"hello"
是堆栈中的第一个参数,"there,"
是第二个参数,"friend"
是第三个参数。对于 add
函数——写成 str:add()
或 string.add(str)
——self
,指的是 str
,是 Lua堆叠。使用索引运算符定义成员函数,如 string.add
形式,可以提供灵活性,因为可以使用具有显式 self
的形式和具有隐式 self
.[= 的形式30=]