Dan*_*ley 2 ruby design-patterns programming-languages ruby-on-rails
我碰巧在ruby中使用Singleton类,只记得它在factory_girl中的工作方式.他们解决了这个问题,因此您可以使用 我想到的漫长的方式 Factory.create(...)和简短的方式 Factory(...),并且好奇地看到它们如何使类Factory也表现得像一个方法.
他们只是这样使用了Factory两次:
def Factory (args)
...
end
class Factory
...
end
Run Code Online (Sandbox Code Playgroud)
我的问题是: ruby如何实现这一目标?使用这种看似古怪的模式有危险吗?
方法和变量存在于不同的命名空间中.因此,您可以使用相同名称的方法和变量(或者在本例中为常量).但是,在使用它们时,Ruby需要能够区分它们.一般来说,这不是问题:消息有接收者,变量没有.消息有参数,变量没有.变量分配给,消息不分配.
唯一的问题是当你没有接收器,没有参数和没有任务时.然后,Ruby无法区分无参数的无接收消息和变量之间的区别.所以,它必须构成一些任意规则,这些规则基本上是:
请注意,对于带参数的消息发送(即使参数列表为空),也没有歧义.
test():显然是一条消息发送,这里没有歧义test:可能是消息发送或变量; 解决规则说它是一个消息发送(除非以前有过分配test)Test():显然是一条消息发送,这里没有歧义self.Test:显然也是一条消息发送,这里没有歧义Test:可能是消息发送或常量; 决议规则说这是一个常数| 归档时间: |
|
| 查看次数: |
621 次 |
| 最近记录: |