簡體   English   中英

Ruby塊隱式變量

[英]Ruby block implicit variables

我想知道Ruby是否具有像Scala中那樣的隱式塊參數或通配符,可以綁定並用於進一步執行,如下所示:

my_collection.each { puts _ }

要么

my_collection.each { puts }

有一些類似於proc的符號,它從集合中調用每個元素的一些方法,如: array_of_strings.each &:downcase ,但我不想在循環中執行對象的方法,而是以此對象作為參數執行一些函數:

my_collection.each { my_method(_) }

代替:

my_collection.each { |f| my_method(f) }

在Ruby中有沒有辦法做到這一點?

你應該能夠做到:

my_collection.each &method(:my_method)

method是在Object類上定義的方法,返回Method類的實例。 Method實例與符號類似,定義了to_proc方法,因此它可以與一元&運算符一起使用。 此運算符獲取定義to_proc方法的proc或任何對象,並將其轉換為塊,然后將其傳遞給方法。 所以,如果你有一個定義如下的方法:

def my_method(a,b)
  puts "#{b}: #{a}"
end

你可以寫:

[1,2,3,4].each.with_index &:method(:my_method)

哪個將翻譯為:

[1,2,3,4].each.with_index do |a,b|
  puts "#{b}: #{a}"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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