[英]How do I map a method over an array?
假設我有一個方法(實際上是一個助手):
def f(x)
x + 1
end
我想要做的是將它映射為一個可枚舉的對象,如下所示:
(1..10).map &f
引發ArgumentError: wrong number of arguments (0 for 1)
顯然不起作用ArgumentError: wrong number of arguments (0 for 1)
錯誤。 我知道我可以像這樣在塊中調用此方法:
(1..10).map {|x| f x }
但這對我來說似乎不是一個優雅的解決方案。 還有什么可以做的呢?
您可以使用:
(1..10).map(&method(:f))
首先,我沒有看到任何優雅
(1..10).map {|x| f x }
通常,您應該使用它。 但是,在特殊情況下,可以使用一種特殊形式(您需要在對象上調用一個方法,並且該方法不接受參數)。
class Fixnum
def f
self + 1
end
end
(1..10).map(&:f)
在這兩種方法之間,我會選擇第一天。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.