簡體   English   中英

如何在數組上映射方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM