fender0107401 发表于 2017-04-08 23:49

lua里面可以把:变成其他的字符吗?

比如这个页面里面的例子:http://www.runoob.com/lua/lua-object-oriented.html

-- Meta class
Shape = {area = 0}

-- 基础类方法 new
function Shape:new (o,side)
o = o or {}
setmetatable(o, self)
self.__index = self
side = side or 0
self.area = side*side;
return o
end

-- 基础类方法 printArea
function Shape:printArea ()
print("面积为 ",self.area)
end

-- 创建对象
myshape = Shape:new(nil,10)

myshape:printArea()
我不喜欢myshape:printArea(),我喜欢myshape::printArea()或者是myshape->printArea()

fender0107401 发表于 2017-04-09 20:29

据说lua是一个非常灵活的语言,不知道有没有这个能力。

windoze 发表于 2017-04-09 23:05

lua里“::”已经有用了,这货是label的前缀,所以改成::是不行的。
你要改成"->"的话,在llex.c里加一行就行了:

static int llex (LexState *ls, SemInfo *seminfo) {
    // ...
      case '-': {/* '-' or '--' (comment) */
      next(ls);
      if (check_next1(ls, '>')) return ':';   // 加上这一行
    // ...
}

测试:

X = {}
function X->f()
end

木有报错

fender0107401 发表于 2017-04-10 20:23

windoze 发表于 2017-04-09 23:05
lua里“::”已经有用了,这货是label的前缀,所以改成::是不行的。
你要改成"->"的话,在llex.c里加一行就 ...

阿猫威武!{:yct68:}
页: [1]
查看完整版本: lua里面可以把:变成其他的字符吗?