CNode

Lua 里对象后边冒号和点号之间区别是什么?

Jjiyinyiyong发布于14 年前最后回复14 年前8 回复11792 浏览0 收藏

JS 里全点号就搞定了, 在 Lua 的教程里看到个 file:seek 之类的, 这是什么意思啊?

查看回复

回复 (8)

L
leizongmin#1·14 年前
引用 imzshh静态函数和成员函数的区别?

@jiyinyiyong 我不懂lua,说说PHP那个吧: 调用静态函数oo::xx()不需要创建一个类的实例,如:

class oo {
  static function xx () {
    // 类似命名空间那样用吧
  }
  function xx2 () {
    // 这里面可以用使用$this,每个实例的$this指向是不同的 
  }
}
// xx()是静态方法,不需要创建实例即可调用:
oo::xx();
// xx2()不是静态方法,必须要创建一个实例才能调用
$oo = new oo();
$oo->xx2();
// 创建实例后,这样也可以调用xx()方法
$oo->xx();

大概应该是这样吧,我没仔细研究过

J
jiyinyiyong#2·14 年前
引用 imzshh静态函数和成员函数的区别?

@leizongmin 例子懂了. 不过对这种语言特性表示好难理解..

I
imzshh#3·14 年前

静态函数和成员函数的区别?

J
jiyinyiyong#4·14 年前
引用 imzshh静态函数和成员函数的区别?

不懂ei, 怎么 Lua 还做这样的区分呢,, 那有没有规律的?

I
imzshh#5·14 年前
引用 imzshh静态函数和成员函数的区别?

@jiyinyiyong Orz,我也不懂Lua……

L
leizongmin#6·14 年前
引用 imzshh静态函数和成员函数的区别?

@jiyinyiyong PHP也类似这样: 静态函数: oo::xx() 成员函数:$oo->xx()

J
jiyinyiyong#7·14 年前
引用 imzshh静态函数和成员函数的区别?

@leizongmin 两者怎么区分呢? 是不是说调用的模块并不是作为对象来理解了, 所以用了 ::?

J
jiyinyiyong#8·14 年前

大致摸清楚了,, 考虑到与 JS 相似度, Lua 设计得好奇怪..

-- 成员方法的定义
function obj:method(a1, a2, ...) … end -- 等价于
function obj.method(self, a1, a2, ...) … end -- 等价于
obj.method = function (self, a1, a2, ...) … end
-- 成员方法的调用
obj:method(a1, a2, …) -- 等价于
obj.method(obj, a1, a2, ...)

参考: http://sebug.net/paper/books/lua/Lua%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8.pdf

参与回复
登录后即可参与回复。登录