lua中print
lua中print
andrew810810 发表于9个月前
lua中print
  • 发表于 9个月前
  • 阅读 14
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

reference:

http://www.lua.org/manual/5.3/manual.html

 

print (···)

Receives any number of arguments and prints their values to stdout, using the tostring function to convert each argument to a string. print is not intended for formatted output, but only as a quick way to show a value, for instance for debugging. For complete control over the output, use string.format andio.write.

 

tostring (v)

Receives a value of any type and converts it to a string in a human-readable format. (For complete control of how numbers are converted, usestring.format.)

If the metatable of v has a __tostring field, then tostring calls the corresponding value with v as argument, and uses the result of the call as its result.

示例:

a = {5, 6}
print(a)
--用c来做Metatable
c = {}
c.__tostring =function(set)
    local s = "{" 
    local sep = ""
    for _,e in pairs(set) do
        s = s .. sep .. e
        sep = ", "
    end 
return s .. "}" 
end

setmetatable(a, c)
print(a)

 

执行结果:

table: 0x1041150
{5, 6}

 

注释:

1. 调用第一个打印print(a),表示a为一个table,以及对应的地址。即print 函数调用 tostring 来格式化的输出。

2.调用第二个打印print(a),结果为__tostring的返回值。即当格式化一个对象的时候,tostring 会首先检查对象是否存在一个带有__tostring 域的 metatable。如果存在则以对象作为参数调用对应的函数来完成格式化,返回的结果即为 tostring 的结果。

标签: Lua
共有 人打赏支持
粉丝 4
博文 127
码字总数 117648
×
andrew810810
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: