字符串通常被认为是对象吗?

我来自 Lua 和 Python 语言,这两种语言都将字符串值视为对象。我只是想知道,字符串值是否实际上被认为是对象?我的意思是,在 Lua 中,您可以配置它们的元表并在它们上使用方法,在 Python 中,您可以直接说一些像 print(``.format)

另一个示例(在Lua中)可以像这样将方法添加到字符串值中:

#原型对象
本地原型= {}

功能原型:打印()
    打印(self--“self”将是字符串
结束

#字符串的元表
本地mt = getmetatable'')
本地指数= mt .__ index

#直接的空引用指向原型对象
setmetatable(index,{__index = proto })

#创建一个字符串
本地str =“hello”
str:print()#调用它的方法

上面的代码将在“print”被调用后,如预期地将字符串打印到输出窗口。那么,字符串值是否像 Lua 中的任何其他数据结构一样是对象?除了它们是不同的数据类型以外,字符串对象和其他对象之间有没有显着的区别?

谢谢您的时间!

点赞
用户6889435
用户6889435

字符串不是对象。引用 Lua 手册:

Lua 有八种基本类型:nil,boolean,number,string,function,userdata,thread 和 table。......

table,function,thread 和(完整的)userdata 值是对象:变量实际上不包含这些值,只有对它们的引用。赋值、参数传递和函数返回值总是操作对这些值的引用;这些操作不意味着任何种类的复制。

这句话

table,function,thread 和(完整的)userdata 值是对象

意味着仅这些是对象其余都是基本类型(原始类型)

2017-10-25 15:27:47