{FastArray-of t:Type} (クラス)
public final serializable FastArray-of {inherits FastArrayCommon}
パッケージ: CURL.LANGUAGE.CORE-TYPES

基本的な基になる Array 型。要素へのアクセスは Array-of よりも高速ですが、FastArray の最大容量はその作成時点で固定され、利用できるメソッドのセットもそれほど多くはありません。

t: その要素の型。

コンストラクタ
default:要素として引数を持つ FastArray を作成および初期化します。
ファクトリ public {FastArray-of.default max-size:int = -1, ...:t}:{FastArray-of t}
from-size:max-size の要素スロットの空間を持つ FastArray を作成および初期化します。
ファクトリ public {FastArray-of.from-size
size:int,
initial-value:t,
max-size:int = size
}:{FastArray-of t}

プロパティ
プロパティ 継承 FastArrayCommon: for-loop-count, max-size, size

メソッド
append:self の最後に e を追加します。
public final {FastArray-of.append e:t}:void
clear:サイズを 0 に設定して、すべての要素を配列から削除します。
public final {FastArray-of.clear}:void
clone:self のシャローコピー(shallow copy)を返します。要素自体はコピーされません。
public final {FastArray-of.clone}:{FastArray-of t}
clone-only:self の "クローン" を作成します。この sizeself のサイズと同じですが、max-size は、その size にまで縮小されています。

FastArray-of.clone も参照してください。
public final {FastArray-of.clone-only}:{FastArray-of t}
clone-range:start から始まる length 個の要素を使用して self から新しい FastArray を作成します。
public final {FastArray-of.clone-range
start:int,
length:int
}:{FastArray-of t}
concat:aself の最後に連結します。
public final {FastArray-of.concat a:{FastArray-of t}}:void
copy-into:self から dest に要素を直接コピーします。
public final {FastArray-of.copy-into
dest:{FastArray-of t},
source-start:int,
dest-start:int,
length:int
}:void
equal?:以下の場合に true を返します。

{type-of a2} == {type-of self} and a2.size == self.size


上の式を満たし、a2 の各要素が、self 内の対応する要素と等しい場合です。
public {FastArray-of.equal? a2:{FastArray-of t}}:bool
find:要素を検索します。
public final {FastArray-of.find
e:t,
equality-proc:#{proc-type {t, t}:bool} = null,
search-direction:SearchDirection = SearchDirection.forward,
starting-index:int = {if search-direction == SearchDirection.forward then 0 else self.size - 1 }
}:int
get:index で示される要素を返します。
public final inline {FastArray-of.get index:int}:t
insert:self 内の index で指定された位置の直前に e を挿入します。
public final {FastArray-of.insert e:t, index:int}:void
pop:self の最後から要素を削除して返します。
public final {FastArray-of.pop}:t
push:self の最後に e をプッシュします。
public final {FastArray-of.push e:t}:void
remove:index 要素から始まる length 個の要素を self から削除します。
public final {FastArray-of.remove index:int, length:int = 1}:void
reverse:self 内の要素の順序を逆にします。
public final {FastArray-of.reverse}:void
set:index で示される要素が element になるように設定します。
public final inline {FastArray-of.set index:int, element:t}:void
set-size:self のサイズを設定します。
public final {FastArray-of.set-size new-size:int, initial-value:t}:void
sort:self の要素をソートします。採用されているのは、安定なソート アルゴリズムです。つまり、同等の要素の相対的な順序は変更しません。
public final {FastArray-of.sort
comparison-proc:#{proc-type {t, t}:bool} = null
}:void
splice:self 内の、index で指定された位置の直前に a をスプライスします。
public final {FastArray-of.splice a:{FastArray-of t}, index:int}:void
top-of-stack:スタックとして見たときに self の最上位にある要素を、self を変更しないで返します。これは、配列の最後の要素です。
public final {FastArray-of.top-of-stack}:t
メソッド 継承 FastArrayCommon: in-bounds?
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (ファクトリ)
public {FastArray-of.default max-size:int = -1, ...:t}:{FastArray-of t}

要素として引数を持つ FastArray を作成および初期化します。

...: 残余引数は、インデックス 0 から始まる初期要素として使用されます。
max-size: 配列に割り当てるストレージの容量。... 内の要素の数よりも小さい場合は、... 内の要素の数に設定されます。それ以外の場合は、抽出された値になります。

戻り値

新しく作成された FastArray を返します。


from-size (ファクトリ)
public {FastArray-of.from-size
size:int,
initial-value:t,
max-size:int = size
}:{FastArray-of t}

max-size の要素スロットの空間を持つ FastArray を作成および初期化します。

size: 初期サイズ。
initial-value: 0 から size - 1 までの要素に格納される値。
max-size: size を拡大できる最大値。指定されていない場合は、既定で size になります。

戻り値

新しく作成された FastArray を返します。

注意事項

size < 0 or size > max-size の場合は、ArrayBoundsException をスローします。



プロパティ詳細


メソッド詳細
append (メソッド)
public final {FastArray-of.append e:t}:void

self の最後に e を追加します。

e: 追加する要素。

注意事項

操作で selfself.max-size より大きくする必要がある場合、つまり配列がすでにいっぱいである場合、このメソッドは ArrayBoundsException をスローします。

このメソッドは、操作の点では Sequence-of.append と同等です。


clear (メソッド)
public final {FastArray-of.clear}:void

サイズを 0 に設定して、すべての要素を配列から削除します。



clone (メソッド)
public final {FastArray-of.clone}:{FastArray-of t}

self のシャローコピー(shallow copy)を返します。要素自体はコピーされません。

注意事項

このメソッドは、操作の点で Aggregate-of.clone と同等です。


clone-only (メソッド)
public final {FastArray-of.clone-only}:{FastArray-of t}

self の "クローン" を作成します。この sizeself のサイズと同じですが、max-size は、その size にまで縮小されています。

FastArray-of.clone も参照してください。



clone-range (メソッド)
public final {FastArray-of.clone-range
start:int,
length:int
}:{FastArray-of t}

start から始まる length 個の要素を使用して self から新しい FastArray を作成します。

start: 新しい FastArray にコピーされる最初の要素のインデックス。
length: コピーする要素の数。

注意事項

指定した中のいずれかの部分がインデックス外である場合、このメソッドは ArrayBoundsException をスローします。

このメソッドは、操作の点で Sequence-of.clone-range と同等です。


concat (メソッド)
public final {FastArray-of.concat a:{FastArray-of t}}:void

aself の最後に連結します。

a: 連結される要素の FastArray

注意事項

操作で selfself.max-size よりも大きくする必要がある場合、つまり、a のすべての要素を入れる十分なスペースがない場合、このメソッドは ArrayBoundsException をスローし、selfを変更しません。

このメソッドは、操作の点で Sequence-of.concat と同等です。


copy-into (メソッド)
public final {FastArray-of.copy-into
dest:{FastArray-of t},
source-start:int,
dest-start:int,
length:int
}:void

self から dest に要素を直接コピーします。

dest: 要素のコピー先となる FastArray
source-start: コピーの開始元となる self のインデックス。
dest-start: 最初のコピー先となる dest のインデックス。
length: コピーする要素の数。

注意事項

self または dest に指定した範囲の中でいずれかの部分がインデックス外である場合、このメソッドは ArrayBoundsException をスローします。

つまり、以下の式が true と評価された場合に ArrayBoundsException がスローされます。

source-start < 0 or
source-start + length < source-start or
source-start + length > self.size or
dest-start < 0 or
dest-start + length < dest-start or
dest-start + length > dest.size


equal? (メソッド)
public {FastArray-of.equal? a2:{FastArray-of t}}:bool

以下の場合に true を返します。

{type-of a2} == {type-of self} and a2.size == self.size


上の式を満たし、a2 の各要素が、self 内の対応する要素と等しい場合です。

a2: 比較される {FastArray-of t}

注意事項

このメソッドは、操作の点で Sequence-of.equal? と同等です。


find (メソッド)
public final {FastArray-of.find
e:t,
equality-proc:#{proc-type {t, t}:bool} = null,
search-direction:SearchDirection = SearchDirection.forward,
starting-index:int = {if search-direction == SearchDirection.forward then 0 else self.size - 1 }
}:int

要素を検索します。

説明

詳細については Sequence-of.find を参照してください。


get (メソッド)
public final inline {FastArray-of.get index:int}:t

index で示される要素を返します。

index: 取り出す要素を指定します。

例外のスロー

index が範囲外の場合、ArrayBoundsException がスローされます。

注意事項

このメソッドの操作は Association-of.get と似ています。


insert (メソッド)
public final {FastArray-of.insert e:t, index:int}:void

self 内の index で指定された位置の直前に e を挿入します。

e: 挿入される要素。
index: e が挿入される場所を指定します。挿入後の e のインデックスは index になります。

注意事項

index が範囲外の場合、または操作で selfself.max-size より大きくする必要がある場合、このメソッドは ArrayBoundsException をスローします。

このメソッドは、操作の点では Sequence-of.insert と同等です。


pop (メソッド)
public final {FastArray-of.pop}:t

self の最後から要素を削除して返します。

注意事項

self.size0 である場合、つまり配列が空である場合、このメソッドは ArrayBoundsException をスローします。

このメソッドは、操作の点で Sequence-of.pop と同等です。


push (メソッド)
public final {FastArray-of.push e:t}:void

self の最後に e をプッシュします。

e: プッシュされる要素。

注意事項

操作で selfself.max-size より大きくする必要がある場合、つまり配列が既にいっぱいである場合、このメソッドは ArrayBoundsException をスローします。

このメソッドは、操作の点で Sequence-of.push と同等です。


remove (メソッド)
public final {FastArray-of.remove index:int, length:int = 1}:void

index 要素から始まる length 個の要素を self から削除します。

index: 削除される最初の要素のインデックス。
length: 削除される要素の数。

注意事項

指定した中のいずれかの部分がインデックス外である場合、このメソッドは ArrayBoundsException をスローします。

このメソッドは、操作の点で Association-of.remove と同等です。


reverse (メソッド)
public final {FastArray-of.reverse}:void

self 内の要素の順序を逆にします。

注意事項

このメソッドは、操作の点で Sequence-of.reverse と同等です。


set (メソッド)
public final inline {FastArray-of.set index:int, element:t}:void

index で示される要素が element になるように設定します。

index: 設定される要素を指定します。
element: 書き込まれる値。

注意事項

index が範囲外の場合はエラーが発生します。

このメソッドは、操作の点で Association-of.set と同等です。


set-size (メソッド)
public final {FastArray-of.set-size new-size:int, initial-value:t}:void

self のサイズを設定します。

new-size: self の新しいサイズを指定します。このパラメータには、負、または self.max-size より大きい値を指定しないでください (指定するとエラーが発生します)。
initial-value: new-sizeself.size の現在の値よりも大きい場合は、新しく作成したスロットを埋める値を指定します。

注意事項

new-size > {ctext self.max-size} の場合、このメソッドは ArrayBoundsException をスローします。


sort (メソッド)
public final {FastArray-of.sort
comparison-proc:#{proc-type {t, t}:bool} = null
}:void

self の要素をソートします。採用されているのは、安定なソート アルゴリズムです。つまり、同等の要素の相対的な順序は変更しません。

comparison-proc: ソート目的で要素を比較します。このプロシージャは、self 内の 2 つの要素に適用されるときに、その 2 つの要素が既に適切な順序になっている場合に true を返します。

このパラメータが指定されていない場合、システムは、要素を昇順でソートする既定値を選択しようとします。

以下は IntVec a を昇順にソートします。

{a.sort
    comparison-proc=
        {proc {x:int y:int}:bool
            {return x <= y}
        }
  }


この例は、comparison-proc を指定しないときに得られる既定の動作と同じ動作になることに注意してください。

注意事項

このメソッドは、操作の点で Sequence-of.sort と同等です。


splice (メソッド)
public final {FastArray-of.splice a:{FastArray-of t}, index:int}:void

self 内の、index で指定された位置の直前に a をスプライスします。

a: スプライス先の要素の FastArray
index: a の最初の要素の挿入先を指定します。挿入後に、a の最初の要素のインデックスは index になります。a の他の要素は、順次挿入されます。

注意事項

index が範囲外の場合、または操作で selfself.max-size より大きくする必要がある場合、このメソッドは ArrayBoundsException をスローします。

このメソッドは、操作の点で Sequence-of.splice と同等です。


top-of-stack (メソッド)
public final {FastArray-of.top-of-stack}:t

スタックとして見たときに self の最上位にある要素を、self を変更しないで返します。これは、配列の最後の要素です。

注意事項

self.size0 である場合、つまり配列が空である場合、このメソッドは ArrayBoundsException をスローします。

このメソッドは、操作の点で Sequence-of.top-of-stack と同等です。