本文へ移動
mie リファレンス
REPL Playground

std:array リファレンス

@import 'std:array' で取得する可変 scratch 配列モジュール。in-place に書き換えられる Array を提供し、frozen で immutable な List に確定する。

array

array(n, init)
array: { Int, Any | Array }

長さ n・全要素 init の可変 scratch 配列 Array を作る。

>>> array.array(3, 0)
Array[0, 0, 0]

build

build(n, init) { h | … }
build: { Int, Any, { Array } | List }

Array を作りブロックを実行、終了時に frozen した immutable List を返す。

>>> array.build(3, 0) { a | a.set(0, 9) }
[9, 0, 0]

from

from(list)
from: { List | Array }

既存 List の内容をコピーした Array を作る。

>>> array.from([1, 2, 3])
Array[1, 2, 3]

Array メソッド

frozen

a.frozen!
frozen: { List(Any) }

内部 buffer を immutable List に確定し封印する。

>>> a := array.from([1, 2, 3])
>>> a.frozen!
[1, 2, 3]

get

a.get(i)
get: { Int | Any }

位置 i の要素 (範囲外は object.Error)。

>>> array.from([10, 20]).get(1)
20

length

a.length!
length: { Int }

要素数。

>>> array.from([1, 2, 3]).length!
3

set

a.set(i, v)
set: { Int, Any | Array }

位置 i を v に上書きし self を返す (連鎖可)。

>>> a := array.array(2, 0)
>>> a.set(0, 99)
Array[99, 0]

swap

a.swap(i, j)
swap: { Int, Int | Array }

位置 i と j の要素を交換し self を返す。

>>> a := array.from([1, 2, 3])
>>> a.swap(0, 2)
Array[3, 2, 1]

update

a.update(i) { x | x' }
update: { Int, Any | Array }

位置 i を read-modify-write し self を返す。

>>> a := array.from([1, 2, 3])
>>> a.update(1) {x | x + 100}
Array[1, 102, 3]