Skip to main content

attach_iterator_helpers

Function attach_iterator_helpers 

Source
pub(crate) fn attach_iterator_helpers(obj: &ObjRef)
Expand description

Iterator.from(iterable)(ES2025)。任意のイテラブル(配列/Set/Map/Generator/文字列)を 即座に展開して ObjKind::Array でラップし、Iterator helpers 一式にアクセスできるようにする。 map/filter/flatMap/forEach/some/every/find/reduce は Array.prototype の 同名メソッドが(このプロパティルックアップでは配列の組込みメソッド判定が .props より 先に評価されるため)そのまま使われ、take/drop/toArray(Array に無いメソッド)のみを .props として追加する。Generator と同じ「その場で全展開する」簡略実装(無限イテレータ非対応)。 take/drop(ES2025 Iterator Helpers)が返す新しい配列オブジェクトへ、 同じヘルパーメソッド一式を再付与する。以前はIterator.from(...)が返す 最初のオブジェクトにしかこれらのメソッドが付与されておらず、.take(n)/ .drop(n)自身が返す新しい配列オブジェクトには引き継がれないため、 Iterator.from([...]).take(2).toArray()のような定番のチェーン呼び出しが 2段目のメソッド呼び出しで「not a function」になって失敗するバグだった。