我注意到所有 3 个“事物”都使用类似的语法,即“name1”后跟一个符号:
示例 1:
attr_reader :methodname
示例 2:
before_create :dothisthing
示例 3:
content_type :json
是否有特定的行话可以用来指代这种语法模式?
我听说这些被称为“类宏”,尤其是在 Rails 的上下文中,但它们本质上都是编写其他类或实例方法的类方法(即元编程)。
我刚刚被告知,上述语法实际上是常规方法调用的语法糖。例如:
erb :index, :layout => false
真的是一样的:
erb(:index, {:layout => false})
上面提到的所有例子都只是利用了这种糖。这对我来说很有意义,但来自 SO 社区的第二意见不会出错。
它们的共同点是它们都使用 :symbols。但是在这三个中,我认为只有 attr_reader 是核心语言的一部分。