此贴必火。给人感觉,咱这个社区人虽然不多,但常来的人整体质量好高哇。而且我觉得很有凝聚力哦
嗨~
我没用过 java, 之前N年前用过C++, 不过这么多年没用,所以作为我来说,一个好处就是:不会按照其他语言的思路来想 Ruby. 我觉得这是你必须先过的一关吧。不要总和 Java 这样的静态语言比较,Ruby 就是 Ruby. 他和之前的大多数语言都很不一样。
有关 private, 其实我不明白你为什么老关注什么是否更改啊,兼容之类的。
如果是在你自己的类中使用 private, 别人根本不会知道,也不会被调用。 但是如果在一个 DSL 中 (例如你编写了一个框架), 那么 private 就代表这是一个全局函数。他作为 DSL 的一部分,会给定义特殊的东西,带来便利。
其实我也没想透。糊里糊涂的,但是我能感觉到你现在有个问题,就是你可能并没有意识到,在 Ruby 中,一切都是对象这个价值观,其实在 Ruby 中,任何东西, 都是在 self 之上被调用的。包括顶级空间。
这会儿网速刚刚的。我比较喜欢 5 号。
搞定了,我一定买。
靠~ 不会连个用过 Slackware 的都没有吧?
我知道为什么我总是求职失败了.....
我自己搞定啦 谢谢楼上各位。
#7 楼 @imsoz
谈不上请教,客气啦.
我一般就是看 Ruby 自带的 ri 文档或者翻镐头书,另外,我会记笔记把类似的方法归纳一下。加深理解.
官方最新的文档,可以在这里查询:http://ruby-doc.org/core-1.9.2/
不过这里貌似没有 define_method 的说明。呵呵。
没有啊。在家陪老婆。
谢谢楼主热心讲解。我也一直觉得应该有个类似的隐形引用的。
不过我要指出楼主代码的几个问题:
A.instance_eval do
...
end
上面这个例子也不妥,会让人误解,因为 instance_eval 应该总是在receiver 作为一个对象而存在的情况下, 被使用 类似楼主的这种伪码几乎在任何情况下都不会真正发生的。换个说法,如果你想定义一个类的单例方法,根本不该这么用。而且,会增加怎么def c
和def self sc
, 定义成一样的方法的烦恼。
我靠。我之前就发过帖子,说 Ruby2012 年会成为国际 ISO 标准,进度还真快。
我可能是咱社区从头到尾,只用过一个 linux 发布版 (Slackware) 的唯一人选吧...
我估计一多半人没听过这个发布版。
M-. [TAG] Find the first definition of TAG. The default tag is the identifier under the cursor. M-* Pop back to where you previously invoked "M-.". C-u M-. Find the next definition for the last tag.
这个帖子是错误的,误导了很多人。
M-. 在 Emacs-lisp 模式下,是 find-function-at-point. 根据英文的描述,它指的是 find-tag 命令. M-* 这个命令跟 find-tag 没有关系的。它只跟 tags-search 或 tags-query-replace 有关
不信你试试。看看是不是我说的那样。