dogwood008の開発メモ!

最近のマイブームは機械学習, Ruby on Rails。中でも機械学習を使った金融商品の自動取引に興味があります。

【Ruby, Python, JS】mapのそれぞれの言語の違い

Ruby

Enumerable#map { |item| ... } -> [object]

配列等のオブジェクトに対し、mapメソッドを呼ぶ。Arrayが返るが、Enumerable#lazyを使って下記のように書けば、遅延評価することもできる。

val = (1..99999999).lazy.map { |i| i.to_s }
=> #<Enumerator::Lazy: ...>
val.to_a  # <= ここで実際に評価が始まるため、次の行が出力されるまで非常に時間がかかる
=> ['1', , ..., '99999999']

参考

docs.ruby-lang.org

Python

組み込み関数の map(function, iterable, ...) -> イテレータ

Pythonは他の言語と違い、ArrayやListで返るのではなくイテレータで返る。イテレータはRubyでいうところの遅延評価のように、list() に渡された時に初めて内部が評価される仕組みになっている。

参考

docs.python.org

JavaScript

Array.prototype.map(function)

Arrayに対し、mapを呼ぶ事で評価される。基本的にはRubyとあまり大きく変わらない。

developer.mozilla.org