首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

Stack Overflow用户

发布于 2013-02-13 03:55:54

您看到的是print函数的行为。它将通过在参数上使用tostring来传递参数。可以像这样使用io.write来实现print (稍微简化一点):

代码语言:javascript
运行
复制
function print(...)
    local args = {n = select('#',...), ...}
    for i=1,args.n do
        io.write(tostring(args[i]), '\t')
    end
    io.write('\n')
end

您应该注意到对tostring的调用。默认情况下,它返回数字、布尔值和字符串的表示形式。由于没有合理的默认方法将其他类型转换为字符串,因此它只显示类型和指向对象的无用内部指针(以便区分实例)。您可以查看the source here

票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14831760

复制
相关文章

相似问题

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