我正在分析rails源代码,因为我想了解has_many类似构造的内部工作原理.
到目前为止,我能够找到实现该方法的位置(链接到github):它位于模块ActiveRecord :: Associations中
def has_many(name, options = {}, &extension)
Builder::HasMany.build(self, name, options, &extension)
end
Run Code Online (Sandbox Code Playgroud)
这个eventualy 在类ActiveRecord :: Associations :: Builder :: CollectionAssociation中结束(链接到github)
def self.build(model, name, options, &extension)
new(model, name, options, &extension).build
end
Run Code Online (Sandbox Code Playgroud)
我的红宝石技能已经结束了,我无法进一步追踪它,找到"新"实施的地方和它的作用.
有人能指出我正确的方向,也许可以评论一下,幕后发生了什么?
阅读本文时,我使用以下语法:
implicit val slaveCanRead: Slave HasPrivilege Read = null
Run Code Online (Sandbox Code Playgroud)
作者说:
另外,请不要
Slave HasPrivilege Read仅此而已HasPrivilege[Slave, Read]
将示例保留在基本的scala中,示例也可能是
val foo: Map[String, Long] = Map()
val bar: String Map Long = Map()
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些可以解释这种语法但找不到任何语法的文档/文章。有人可以指出允许使用此语法的语言功能吗?