浏览 481 次
|
该帖已经被评为新手帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-03-15
不是很细心看教学章节,直接拿来一个程序来识读,在某些局部方面希望资深者指导,
在红色备注方面给与帮助
module Calculator
class Adder
def compute( a, b )
a.to_f + b.to_f
end
end
class Subtractor
def compute( a, b )
a.to_f - b.to_f
end
end
class Multiplier
def compute( a, b )
a.to_f * b.to_f
end
end
class Divider
def compute( a, b )
a.to_f / b.to_f
end
end
class Sine
def compute( a )
Math.sin( a )
end
end
#定义一个计算类,注意其中
# method_missing
# respond_to
class Calculator
def initialize( operations )
@operations = operations
end
def method_missing( op, *args )
if @operations.has_key?(op)
@operations[op].compute( *args )
else
super
end
end
def respond_to?( op )
@operations.has_key?(op) or super
end
end
def register_services( registry )
registry.namespace! :calc do
namespace! :operations do
add { Adder.new }
subtract { Subtractor.new }
multiply { Multiplier.new }
divide { Divider.new }
sin { Sine.new }
end
calculator { Calculator.new( operations ) }
end
end
module_function :register_services
end
知道这段代码是一个定义加,减,乘,除的包文件,其中,语法中有些没搞清楚: 1. 像这样 xxx ! symbol 表示啥意思? 定义符号? 2. 类calculator,其中定义了2个方法,这2个方法是从默认的Object继承来的吗? 3.对类变量操作中有个has_key?是判断什么?是哈希表操作? 4.在register_server中操作: do
add { Adder.new }
subtract { Subtractor.new }
multiply { Multiplier.new }
divide { Divider.new }
sin { Sine.new }
end这个是做啥啊,建立哈希表,还是对块命名?郁闷,觉得ruby有些代码还是有些看不懂,不像其他语言,拿来就能读懂,而ruby语言太丰富了。 某些方面像猜谜一样。 ruby基础扫了几遍,枝枝节节太琐碎,灵活有余但感觉上手需要花些时间。
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-03-18
1. 像这样 xxx ! symbol 表示啥意思? 定义符号?
!说明函数xxx会修改对象的内部状态,和xxx?的相对,symbol就是传递给函数的参数 2. 类calculator,其中定义了2个方法,这2个方法是从默认的Object继承来的吗? 是的 3.对类变量操作中有个has_key?是判断什么?是哈希表操作? 当然了。 4.在register_server中操作: 嵌套的block ruby的确比较灵活,需要掌握的东西比较繁琐,但是多看书,多看代码,多写写,ruby没我们想得那么复杂。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-03-18
既然你不好好看教程,为什么又要到这里问?我真想直接给这个帖子弄个新手贴……
|
|
| 返回顶楼 | |
|
最后更新时间:2008-03-20
我教程通看了几次,哪里记得那么多细节
的确承认我不够仔细,但是让我像以前学c语言,从printf("%s",Hello world)开始 写实在是太不可能了。 现在很多时候,拿起语言就写一段自己所要的功能,不懂的就翻资料看啊, 但偏偏ruby资料分门别类的有些方面就像找地图。 比如下面的正则表达式,我还没看懂这个im在ruby表示啥意思,, def parse_html(data,tag) return data.scan(%r{<#{tag}\s*.*?>(.*?)</#{tag}>}im).flatten end 通看了ruby的正则,后面要是跟个n啊,数字类就表示匹配几个,im莫非也是和n一样,表示任意个? |
|
| 返回顶楼 | |






