lor*_*orz 5 ruby java terminology
如果我说
x.hello()
Run Code Online (Sandbox Code Playgroud)
在Java中,对象x"调用"它包含的方法.
在Ruby中,对象x正在"接收"它包含的方法.
这只是表达相同想法的不同术语,还是这里的意识形态存在根本差异?
来自Java,我发现Ruby的"接收器"想法非常令人困惑.也许有人可以解释这与Java有关吗?
差异不仅仅是术语.在Java中,VM确定给定对象是否"接受"您尝试发送的消息(即,您尝试调用的方法).如果对象的类型空间未定义该方法,则抛出异常并且永远不会传递消息.
在Ruby中,始终传递消息.对象可能会找到匹配它的方法,或者它可能不匹配,在后一种情况下,它可能会抛出异常,或者它可能不会.Rails建立在这个基本差异之上.这就是为什么没有像DB支持的Web应用程序框架在Java平台上像Rails一样有用的原因之一(尽管有些已经接近).
如果我错了,有人会纠正我,但我认为你不能将这些术语应用于Java.Ruby来自Smalltalk,它使用消息(而不是方法)在对象之间进行通信.从技术上讲,当您myObj.to_s在Ruby中执行操作时,您将发送to_s消息,myObj并相应地对该消息进行操作.使用该模型,myObj确实是此消息的接收者,并且拥有发送消息的行的类是发送者.
在Java中,这不存在.您有调用方法的对象.没有发件人和收件人.当你说意识形态存在根本差异时,你说得对.
| 归档时间: |
|
| 查看次数: |
2173 次 |
| 最近记录: |