Rubyの隠れた機能 質問する

Rubyの隠れた機能 質問する

「...の隠された機能」ミームの続きとして、Ruby プログラミング言語のあまり知られていないが便利な機能を共有しましょう。

この議論は、Ruby on Rails に関する内容を含めず、コア Ruby に限定するようにしてください。

参照:

(お願い、ただ1つ回答ごとに隠された機能。

ありがとう

ベストアンサー1

Ruby 1.9 以降、Proc#=== は Proc#call のエイリアスです。つまり、Proc オブジェクトは次のように case 文で使用できます。

def multiple_of(factor)
  Proc.new{|product| product.modulo(factor).zero?}
end

case number
  when multiple_of(3)
    puts "Multiple of 3"
  when multiple_of(7)
    puts "Multiple of 7"
end

おすすめ記事