在地面, 红宝石看起来非常相似,如Java,PHP,C等其他物体orieinted语言困惑时使用VS括号中的块红宝石
但是,事情就当我们开始颠簸有点怪分成块。
例如,这工作
(0...8).max()
=> 7
但这并不
(0...8).map(puts "hello world")
hello world
ArgumentError: wrong number of arguments(1 for 0)
Apprantly,地图方法不带参数,但不对块,所以通过与{}
替换()
修复错误。
(0...8).map{puts "hello world"}
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
=> [nil, nil, nil, nil, nil, nil, nil, nil]
然后,有一些方法要考虑两个 - 块&参数
8.downto(1){puts "hello world"}
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
=> 8
我的问题是,如果我应该使用()
,{}
混乱或两者给出的方法。它根据什么决定?
- 它是固定在每个方法的基础上&我只是想记住什么方法(块或参数)?
- 还是有任何其他逻辑推理的基础上,它得到决定,如果方法采取块
{}
或params()
?
请帮助我了解