我正在阅读续集的文档,我对以下代码段中使用的技术感到好奇:
class Post < Sequel::Model(:my_posts)
(...)
end
Sequel::Model(:my_posts)
设置模型的数据库表。我特别好奇Model(:my_posts)
中的括号。我喜欢这个界面,但我怎么能实现呢?这有点奇怪......似乎可以将Model
称为方法......这是什么技术?有人可以举个例子吗?
答案 0 :(得分:4)
通常当你对模块或类使用::
时,ruby会尝试在常量::
之后找到表达式。
Example::First => as constant
Example::First() => as method
运行此代码:
module Example
class << self
def First(a)
puts a
end
end
module First
end
end
用法:
Example::First(1) # => prints 1
使用class << self
时,打开self的类,以便可以为当前的self对象重新定义方法(在类或模块体内是类或模块本身)。在SO上阅读好question/answers。
使用启动方法名称是一种很好的做法,虽然不是强制性的 一个小写字符,因为名字以大写字母开头 是Ruby中的常量。它仍然可以使用常量名称 一个方法,但如果没有括号,你将无法调用它, 因为interpeter将查找名称为常量