首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有一个表达式的名称,返回它们是什么,而不是引用?

有没有一个表达式的名称,返回它们是什么,而不是引用?
EN

Stack Overflow用户
提问于 2013-02-12 19:42:39
回答 5查看 70关注 0票数 0

我注意到字符串、数字、bool和nil数据似乎很容易处理。但是当涉及到函数、表等时,你会得到一个引用,而不是实际的对象。

这种现象有没有一个名字?是否有术语来描述这两组类型的处理方式之间的区别?

代码语言:javascript
运行
复制
a = "hi"    
b = 1
c = true
d = nil
e = {"joe", "mike"}
f = function () end
g = coroutine.create(function () print("hi") end)

print(a) --> hi
print(b) --> 1
print(c) --> true
print(d) --> nil
print(e) --> table: 0x103350
print(f) --> function: 0x1035a0
print(g) --> thread: 0x103d30
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-26 04:29:13

.Net (Microsoft Visual Basic,Visual C++和C#)将它们描述为值类型和引用类型,其中引用类型通过引用引用指值,值类型保存实际值。

我不认为lua对它有太多的想法,因为它应该是一种更简单的解释型语言,最终它并不重要,因为lua是一种相当弱类型的语言(例如,当你试图在不能使用的类型上使用操作时,它除了抛出错误之外,不会强制类型安全)。

无论哪种方式,根据我的经验,大多数程序员都将它们理解为“值类型”和“引用类型”,所以我认为它们是最好坚持使用的两个术语。

票数 1
EN

Stack Overflow用户

发布于 2013-02-12 19:48:18

您在这里看到的是编译器试图返回对象的字符串表示。对于简单的对象类型,已经提供了__tostring实现,但是对于其他更复杂的类型,没有直观的方法来返回字符串表示。

有关可能有帮助的更多信息,请参阅Lua: give custom userdata a tostring method

票数 3
EN

Stack Overflow用户

发布于 2013-02-12 19:50:17

在Lua中,数字就是值,其他所有东西都只能通过引用来访问。但print上的不同行为只是因为无法实际打印函数(虽然表可能具有打印的默认行为,但它们没有-可能是因为它们被允许具有循环引用)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14831760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档