我来自Lua和Python的语言,两者都将其字符串值视为对象。我只是想知道,是字符串值实际上被视为对象?我的意思是,在Lua中你可以配置他们的metatables并使用它们的方法,在Python中你可以直接说出类似print("".format)
另一个例子(在Lua中)可能是将一个方法添加到字符串值,如下所示:
#Prototype object
local proto = {}
function proto:print()
print(self) -- "self" will be the string
end
#String's metatable
local mt = getmetatable("")
local index = mt.__index
#Direct nil references to the prototype object
setmetatable(index, { __index = proto })
#Create a string
local str = "hello"
str:print() #Call it's method
上面的代码会将字符串打印到输出窗口一次" print"像预期的那样被称为。字符串值对象就像Lua中的任何其他数据结构一样吗? Python和其他语言也一样吗? 字符串对象与语言中的其他对象之间是否存在显着差异,除了它们是不同的数据类型之外?
谢谢你的时间!
答案 0 :(得分:0)
字符串不是对象。引用Lua手册:
Lua中有八种基本类型:nil,boolean,number,string, function,userdata,thread和table。 ....
表,函数,线程和(完整)用户数据值是对象: 变量实际上不包含这些值,只引用 他们。赋值,参数传递和函数总是返回 操纵对这些值的引用;这些操作并不意味着 任何类型的副本。
这句话
表,函数,线程和(完整)用户数据值是对象
表示仅这些是对象,其余为基本类型(基元)。