多次调用函数并获取结果列表

trh*_*178 8 ruby reduce dictionary function

我想调用该函数f5次(例如)并获得结果列表.现在我有这个:

(1..5).to_a.map!{f}
Run Code Online (Sandbox Code Playgroud)

注:现在f是不带任何输入,并返回一个函数truefalse.所以当这个运行完成后,我得到一个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 }没有用,所以无论如何我们都会玩一些心理游戏.


mae*_*ics 6

如果您想要基于零的增加参数,请尝试使用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)