RubyのリファレンスマニュアルのEnumerableの所を読みながら即興で作ったもので、たぶん抜けや間違いなどあると思いますので、ご指摘いただければ幸いです。あと、ScalaにあってRubyに無い高階関数については書いてません。
Ruby | Scala |
---|---|
Enumerable#all? | Iterable#forall |
Enumerable#any? | Iterable#exists |
Enumerable#collect,map | Iterable#map |
Enumerable#each | Iterable#foreach |
Enumerable#each_with_index | なし(List#zipWithIndexを使うことで同様のことは可能) |
Enumerable#find,detect | Iterable#find |
Enumerable#find_all,select | Iterable#filter |
Enumerable#grep | なし |
Enumerable#inject | Iterable#foldLeft |
Enumerable#max | Iterable.max |
Enumerable#min | Iterable.min |
Enumerable#partition | Iterable#partition |
Enumerable#reject | List#remove |
Enumerable#sort | List#sort,scala.util.Sortingの各種メソッド |
Enumerable#sort_by | scala.util.Sorting#stableSort[K, M](a : Seq[K], f : (K) => M)(implicit view$4 : (M) => Ordered[M]) |
補足:Scalaのコレクションクラスは、RubyにおけるEnumerableと同様に、ほぼ全てがIterableを直接・間接に継承しているため(Javaの場合と違い、Mapも含めて)、Iterableにあるこれらの高階関数は、大抵のコレクションクラスで問題無く使うことができます。
補足2:ohacさんからツッコミ
Iterable.max(List(1,2,3)) みたいなこともできますよね。
補足に追記しておいて頂けるとうれしいです。
がありましたので、表に追記しておきました。