如何正确使用self在这个示例中打印字符串
2019-12-30 20:56:18
收藏:0
阅读:143
评论:1
在这个 MWE 中,我试图写一个在 lua 中的函数,当调用它时,它会打印一些文本以及调用函数的字符串。
为了实现这个目的,我使用了 self 来打印字符串,但实际上它返回了一个 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
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

在你的函数中,
string.add(self)相当于string:add()。在后者中,它是字符串类的成员函数或方法,self是隐式的第一个参数。这与 Python 中的类类似,其中self是每个成员函数的第一个参数。-- 注意 self 参数。 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的形式。