trh*_*178 8 ruby reduce dictionary function
我想调用该函数f5次(例如)并获得结果列表.现在我有这个:
(1..5).to_a.map!{f}
Run Code Online (Sandbox Code Playgroud)
注:现在f是不带任何输入,并返回一个函数true或false.所以当这个运行完成后,我得到一个5 true/ false值的列表.
有没有更好的方法来使用其他内置函数(可能reduce?我有这个想法,但无法弄清楚如何使用它...)
Dav*_*ton 36
5.times.collect { f }
Run Code Online (Sandbox Code Playgroud)
(假设没有参数.map是别名collect;我更喜欢collect实际收集的名称,因为它似乎更具沟通性,但是YMMV.)
我也更喜欢更长的5.times而不是(1..5).这似乎也更具沟通性:我不是真的"迭代一个范围",我"做了五次".
在这种情况下,IMO的回答有点违反直觉,因为我并没有真正跑collect五次,但是collect.5.times { f }没有用,所以无论如何我们都会玩一些心理游戏.
如果您想要基于零的增加参数,请尝试使用Array构造函数的块形式:
Array.new(5) {|x| (x+1).to_f} # => [1.0, 2.0, 3.0, 4.0, 5.0]
Array.new(10) { rand } # => [0.794129655156092, ..., 0.794129655156092]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6137 次 |
| 最近记录: |