Home English

Kuina-chan

くいなちゃんAug 22, 2017


プログラミング言語Kuin」の組み込みメソッドについてです。

Kuinの組み込みメソッド

Kuinでは、クラス以外の基本的な型にもメソッドが用意されています。 これらは組み込みで用意されており、ユーザが追加したり変更することはできません。
Kuinにおける組み込みメソッドはKuinの組み込みメソッドの通りです。
Kuinの組み込みメソッド
対象となる型 メソッド 説明
int、float、char、
bool、ビット型、[]char
toStr 値の文字列化
int、float abs 絶対値
clamp 値のクランプ
clampMin 値の最小値をクランプ
clampMax 値の最大値をクランプ
float same 計算誤差を考慮した比較
char offset 文字コードのオフセット
ビット型 or ビットごとの論理和
and ビットごとの論理積
xor ビットごとの排他的論理和
not ビットごとの論理否定
shl 左論理シフト
shr 右論理シフト
sar 右算術シフト
endian エンディアンの変換
配列 sub 配列の部分切り出し
reverse 配列の逆順
shuffle 配列のシャッフル
sort 配列の昇順ソート
sortDesc 配列の降順ソート
find 配列の検索
findLast 配列の逆順検索
findBin 配列の二分探索
fill 配列を同じ値で埋める
[]char toInt int型に変換
toFloat float型に変換
lower 文字列の小文字化
upper 文字列の大文字化
trim 文字列の左右の空白文字の削除
trimLeft 文字列の左の空白文字の削除
trimRight 文字列の右の空白文字の削除
split 文字列を区切り文字列で分割
[][]char join 文字列の配列を1つの文字列に結合
list、stack、queue、dict add 要素の追加
get 要素の取得
list getOffset 指定位置の要素の取得
head ポインタを先頭に移動
tail ポインタを末尾に移動
next ポインタを次に移動
prev ポインタを前に移動
moveOffset ポインタを指定位置に移動
term ポインタがnullかどうかを取得
termOffset 指定位置がnullかどうかを取得
del ポインタ位置の要素を削除
ins ポインタ位置に要素を挿入
toArray リストの配列化
stack、queue peek 要素を削除せずに取得
それぞれの組み込みメソッドについて、以下で詳しく説明します。

toStr

「toStr」は値を文字列に変換するメソッドで、int、float、char、bool、ビット型、[]charに用意されています(toStrメソッドの定義)。
toStrメソッドの定義

 func toStr(): []char

戻り値 変換された文字列
toStrメソッドの戻り値の例は、「toStr」メソッドの戻り値の例です。
toStrメソッドの戻り値の例
戻り値
(5).toStr() "5"
(3.14).toStr() "3.14"
('A').toStr() "A"
(true).toStr() "true"
(16#12b8).toStr() "0x12"
(16#1234b16).toStr() "0x1234"
(16#12345678b32).toStr() "0x12345678"
(16#123456789ABCDEF0b64).toStr() "0x123456789ABCDEF0"

絶対値とクランプ

以下はint、floatに用意されている、絶対値とクランプのメソッドです。

abs

「abs」は絶対値を求めるメソッドです(absメソッドの定義)。
absメソッドの定義

 func abs(): 自身の型

戻り値 nの絶対値
絶対値とは、符号を正に変える演算です。 例えば「(-3).abs()」は「3」になり、「(5.2).abs()」は「5.2」になります。

clamp

「clamp」は値を最小値と最大値でクランプするメソッドです(clampメソッドの定義)。
clampメソッドの定義

 func clamp(min: 自身の型, max: 自身の型): 自身の型

min 最小値
max 最大値
戻り値 値がminより小さいときはmin、値がmaxより大きいときはmax、それ以外はそのままの値
「clamp」が生成する例外はclamp関数の例外の通りです。
clamp関数の例外
例外コード
(16進数)
ビルド 発生条件
09170000 dbgのみ 「min」が「max」より大きい

clampMin

「clampMin」は値を最小値でクランプするメソッドです(clampMinメソッドの定義)。
clampMinメソッドの定義

 func clampMin(min: 自身の型): 自身の型

min 最小値
戻り値 値がminより小さいときはmin、それ以外はそのままの値

clampMax

「clampMax」は値を最大値でクランプするメソッドです(clampMaxメソッドの定義)。
clampMaxメソッドの定義

 func clampMax(max: 自身の型): 自身の型

max 最大値
戻り値 値がmaxより大きいときはmax、それ以外はそのままの値

same

「same」はfloatの計算誤差を許容して比較する演算子です(sameメソッドの定義)。
sameメソッドの定義

 func same(n: float): bool

n 比較対象の値
戻り値 ほぼ一致しているかどうか
浮動小数点型であるfloatは、一般的には計算するうちに誤差が生じていきますので、数学的には一致するはずの計算が「=」演算子ではfalseを返すようになります。 そこで、float同士の一致を判定するにはsameメソッドを使うと良いでしょう。
sameメソッドの仕様はsameメソッドの仕様の通りです。
  • 「same」メソッドは、浮動小数点型で表現可能な数のうち24個分離れた数までを一致とみなす。
sameメソッドの仕様
設計の理由
 浮動小数点型で表現可能な隣り合った数の間隔は、値の絶対値が大きくなるにつれて大きくなりますが、一般に絶対値が大きな数の計算では誤差の絶対値も大きくなり、小さな数の計算では誤差の絶対値も小さくなりますので、絶対値の大きさに応じて許容範囲を変えるためにこの間隔を利用しています。

offset

「offset」はcharの文字コードにオフセットを適用させる演算子です(offsetメソッドの定義)。
offsetメソッドの定義

 func offset(n: int): char

n オフセット値
戻り値 文字コードにnを加算した文字
例えば、「'C'.offset(-2)」とすると、「'C'」の文字コードは67ですので、-2を加算した、文字コード65の文字「'A'」が返ります。

ビット演算

以下はビット型に用意されている、ビット演算を行うメソッドです。

or

「or」はビットごとの論理和を求めるメソッドです(orメソッドの定義)。
orメソッドの定義

 func or(n: 自身の型): 自身の型

n 任意の値
戻り値 nとのビットごとの論理和

and

「and」はビットごとの論理積を求めるメソッドです(andメソッドの定義)。
andメソッドの定義

 func and(n: 自身の型): 自身の型

n 任意の値
戻り値 nとのビットごとの論理積

xor

「xor」はビットごとの排他的論理和を求めるメソッドです(xorメソッドの定義)。
xorメソッドの定義

 func xor(n: 自身の型): 自身の型

n 任意の値
戻り値 nとのビットごとの排他的論理和

not

「not」はビットごとの論理否定を求めるメソッドです(notメソッドの定義)。
notメソッドの定義

 func not(): 自身の型

戻り値 ビットごとの論理否定

shl

「shl」は左論理シフトを求めるメソッドです(shlメソッドの定義)。
shlメソッドの定義

 func shl(n: 自身の型): 自身の型

n 任意の値
戻り値 nビットだけ左論理シフトした値
設計の理由
 「shl」という名前はx86アセンブリに由来します。 「SHift logical Left」の略称です。
左算術シフトは、左論理シフトと常に同じ結果となるためこの「shl」で代用します。

shr

「shr」は右論理シフトを求めるメソッドです(shrメソッドの定義)。
shrメソッドの定義

 func shr(n: 自身の型): 自身の型

n 任意の値
戻り値 nビットだけ右論理シフトした値
設計の理由
 「shr」という名前はx86アセンブリに由来します。 「SHift logical Right」の略称です。

sar

「sar」は右算術シフトを求めるメソッドです(sarメソッドの定義)。
sarメソッドの定義

 func sar(n: 自身の型): 自身の型

n 任意の値
戻り値 nビットだけ右算術シフトした値
設計の理由
 「sar」という名前はx86アセンブリに由来します。 「Shift Arithmetic Right」の略称です。

endian

「endian」はエンディアンを変換するメソッドです(endianメソッドの定義)。
endianメソッドの定義

 func endian(): 自身の型

戻り値 エンディアンを変換した値
リトルエンディアンの値はビッグエンディアンになり、ビッグエンディアンの値はリトルエンディアンになります。

配列演算

以下は配列に用意されているメソッドです。

sub

「sub」は配列の一部を切り出して新しいインスタンスとして返すメソッドです(subメソッドの定義)。
subメソッドの定義

 func sub(start: int, len: int): 自身の型

start 切り出す部分の先頭の要素番号
len 切り出す長さ。 「-1」を指定すると終端までになる
戻り値 切り出した配列
subメソッドの仕様はsubメソッドの仕様の通りです。
  • startやlenで指定された領域が実際の配列の領域から外れていた場合、デバッグ実行時に例外が発生する。
subメソッドの仕様

reverse

「reverse」は配列の並びを逆順にするメソッドです(reverseメソッドの定義)。
reverseメソッドの定義

 func reverse()

このメソッドは自身のインスタンスを並び替えるため、元のデータを保存したい場合は事前に「##演算子」でディープコピーを行ってください。

shuffle

「shuffle」は配列をランダムに並び替えるメソッドです(shuffleメソッドの定義)。
shuffleメソッドの定義

 func shuffle()

shuffleメソッドの仕様はshuffleメソッドの仕様の通りです。
  • 並び替えにはメルセンヌツイスタが使われ、どの要素がどこに配置されるかが均等な確率になるように並び替わる。
shuffleメソッドの仕様
このメソッドは自身のインスタンスを並び替えるため、元のデータを保存したい場合は事前に「##演算子」でディープコピーを行ってください。

sortAsc

「sortAsc」は配列を昇順に並び替えるメソッドです(sortAscメソッドの定義)。
sortAscメソッドの定義

 func sortAsc()

sortAscメソッドの仕様はsortAscメソッドの仕様の通りです。
  • 並び替えは要素の型に定義された比較演算を使って、安定ソートで行われる。
sortAscメソッドの仕様
このメソッドは自身のインスタンスを並び替えるため、元のデータを保存したい場合は事前に「##演算子」でディープコピーを行ってください。

sortDesc

「sortDesc」は配列を降順に並び替えるメソッドです(sortDescメソッドの定義)。
sortDescメソッドの定義

 func sortDesc()

sortDescメソッドの仕様はsortDescメソッドの仕様の通りです。
  • 並び替えは要素の型に定義された比較演算を使って、安定ソートで行われる。
sortDescメソッドの仕様
このメソッドは自身のインスタンスを並び替えるため、元のデータを保存したい場合は事前に「##演算子」でディープコピーを行ってください。

find

「find」は配列中から指定した要素を探し、最初に見つかった要素の位置を返すメソッドです(findメソッドの定義)。
findメソッドの定義

 func find(item: 要素の型): int

戻り値 最初に見つかった位置。 1つも見つからなかった場合は「-1」

findLast

「findLast」は配列中から指定した要素を探し、最後に見つかった要素の位置を返すメソッドです(findLastメソッドの定義)。
findLastメソッドの定義

 func findLast(item: 要素の型): int

戻り値 最後に見つかった位置。 1つも見つからなかった場合は「-1」

findBin

「findBin」は昇順にソート済みの配列中から指定した要素を二分探索するメソッドです(findBinメソッドの定義)。
findBinメソッドの定義

 func findBin(item: 要素の型): int

戻り値 見つかった位置。 見つからなかった場合は「-1」
データは昇順にソートされている必要がありますが、他の「find」「findLast」メソッドに比べて検索速度は非常に速いです。

fill

「fill」は配列を同じ値で埋めるメソッドです(fillメソッドの定義)。
fillメソッドの定義

 func fill(value: 要素の型): int

fillメソッドを呼び出すと、現在確保している配列の各要素をvalueの値で上書きします。 一括で初期化したい場合などに使用します。

文字列演算

以下は[]charに用意されているメソッドです。

toInt

「toInt」は文字列からint値に変換するメソッドです(toIntメソッドの定義)。
toIntメソッドの定義

 func toInt(): int

戻り値 変換されたint値

toFloat

「toFloat」は文字列からfloat値に変換するメソッドです(toFloatメソッドの定義)。
toFloatメソッドの定義

 func toFloat(): float

戻り値 変換されたfloat値

lower

「lower」は文字列中の大文字を小文字に変換するメソッドです(lowerメソッドの定義)。
lowerメソッドの定義

 func lower(): []char

戻り値 小文字化された文字列

upper

「upper」は文字列中の小文字を大文字に変換するメソッドです(upperメソッドの定義)。
upperメソッドの定義

 func upper(): []char

戻り値 大文字化された文字列

trim

「trim」は文字列の左右の空白文字を削除するメソッドです(trimメソッドの定義)。
trimメソッドの定義

 func trim(): []char

戻り値 左右の空白文字が削除された文字列

trimLeft

「trimLeft」は文字列の左の空白文字を削除するメソッドです(trimLeftメソッドの定義)。
trimLeftメソッドの定義

 func trimLeft(): []char

戻り値 左の空白文字が削除された文字列

trimRight

「trimRight」は文字列の右の空白文字を削除するメソッドです(trimRightメソッドの定義)。
trimRightメソッドの定義

 func trimRight(): []char

戻り値 右の空白文字が削除された文字列

split

「split」は文字列を区切り文字により、複数の文字列に分割するメソッドです(splitメソッドの定義)。
splitメソッドの定義

 func split(delimiter: []char): [][]char

delimiter 区切り文字
戻り値 区切り文字によって分割された文字列
例えば「"abc*def**g".split('*')」を呼び出すと、「["abc", "def", "", "g"]」が返ります。

join

「join」は[][]charの各要素を区切り文字により、1つの文字列に結合するメソッドです(joinメソッドの定義)。
joinメソッドの定義

 func join(delimiter: []char): []char

delimiter 区切り文字
戻り値 区切り文字によって結合された文字列
例えば「["abc", "def", "", "g"].join('*')」を呼び出すと、「"abc*def**g"」が返ります。

add

「add」は要素を追加するメソッドで、list、stack、queue、dictに用意されています。

list.add

listの「add」メソッドはlist.addメソッドの定義<の通りです。
list.addメソッドの定義

 func add(item: 要素の型)

item 追加する要素

stack.add

stackの「add」メソッドはstack.addメソッドの定義の通りです。
stack.addメソッドの定義

 func add(item: 要素の型)

item 追加する要素

queue.add

queueの「add」メソッドはqueue.addメソッドの定義の通りです。
queue.addメソッドの定義

 func add(item: 要素の型)

item 追加する要素

dict.add

dictの「add」メソッドはdict.addメソッドの定義の通りです。
dict.addメソッドの定義

 func add(key: キーの型, item: 要素の型)

key 追加する要素のキー
item 追加する要素

get

「get」は要素を取得するメソッドで、list、stack、queue、dictに用意されています。

list.get

listの「get」メソッドはlist.getメソッドの定義の通りです。
list.getメソッドの定義

 func get(): 要素の型

戻り値 ポインタの位置の要素

stack.get

stackの「get」メソッドは要素を取得して削除します(stack.getメソッドの定義)。
stack.getメソッドの定義

 func get(): 要素の型

戻り値 取得した要素
要素を削除せずに取得だけを行う場合は「peek」メソッドを使用します。

queue.get

queueの「get」メソッドは要素を取得して削除します(queue.getメソッドの定義)。
queue.getメソッドの定義

 func get(): 要素の型

戻り値 取得した要素
要素を削除せずに取得だけを行う場合は「peek」メソッドを使用します。

dict.get

dictの「get」メソッドはdict.getメソッドの定義の通りです。
dict.getメソッドの定義

 func get(key: キーの型): 要素の型

戻り値 指定したキーに対応する要素

リスト演算

以下はlistに用意されているメソッドです。

getOffset

「getOffset」はリストのポインタからのオフセットの位置の要素を取得するメソッドです(getOffsetメソッドの定義)。
getOffsetメソッドの定義

 func getOffset(offset: int): 要素の型

offset ポインタからのオフセット
戻り値 ポインタからのオフセットの位置の要素

head

「head」はリストのポインタを先頭の要素の位置に設定するメソッドです(headメソッドの定義)。
headメソッドの定義

 func head()

tail

「tail」はリストのポインタを末尾の要素の位置に設定するメソッドです(tailメソッドの定義)。
tailメソッドの定義

 func tail()

next

「next」はリストのポインタを次の要素の位置に進めるメソッドです(nextメソッドの定義)。
nextメソッドの定義

 func next()

nextメソッドの仕様はnextメソッドの仕様の通りです。
  • 次の要素が存在しないとき、ポインタはnullに設定される。
nextメソッドの仕様

prev

「prev」はリストのポインタを前の要素の位置に戻すメソッドです(prevメソッドの定義)。
prevメソッドの定義

 func prev()

prevメソッドの仕様はprevメソッドの仕様の通りです。
  • 前の要素が存在しないとき、ポインタはnullに設定される。
prevメソッドの仕様

moveOffset

「moveOffset」はリストのポインタをオフセットの位置に移動させるメソッドです(moveOffsetメソッドの定義)。
moveOffsetメソッドの定義

 func moveOffset(offset: int)

offset ポインタからのオフセット
moveOffsetメソッドの仕様はmoveOffsetメソッドの仕様の通りです。
  • オフセットの位置の要素が存在しないとき、ポインタはnullに設定される。
moveOffsetメソッドの仕様

term

「term」はリストのポインタがnullかどうかを返すメソッドです(termメソッドの定義)。
termメソッドの定義

 func term(): bool

戻り値 ポインタがnullかどうか
「next」メソッドや「prev」メソッドによってポインタが終端にたどり着いたときにはポインタはnullに設定されるため、終端にたどり着いたかどうかをこの「term」メソッドで取得できます。

termOffset

「termOffset」はリストのポインタからのオフセットの位置がnullかどうかを返すメソッドです(termOffsetメソッドの定義)。
termOffsetメソッドの定義

 func termOffset(offset: int): bool

offset ポインタからのオフセット
戻り値 ポインタからのオフセットの位置がnullかどうか

del

「del」はリストのポインタの位置の要素を削除し、その次の要素の位置にポインタを進めるメソッドです(delメソッドの定義)。
delメソッドの定義

 func del()

delメソッドの仕様はdelメソッドの仕様の通りです。
  • 次の要素が存在しないとき、ポインタはnullに設定される。
delメソッドの仕様

ins

「ins」はリストのポインタがその位置の要素を指すようにしたまま、その前に要素を挿入するメソッドです(insメソッドの定義)。
insメソッドの定義

 func ins(item: 要素の型)

item 挿入する要素

toArray

「toArray」はリストを配列に変換するメソッドです(toArrayメソッドの定義)。
toArrayメソッドの定義

 func toArray(): リストの要素の型を要素とする配列の型

戻り値 変換された配列

peek

「peek」は次に取得される要素を削除せずに取得するメソッドで、stack、queueに用意されています(peekメソッドの定義)。
peekメソッドの定義

 func peek(): 要素の型

戻り値 次に取得される要素
1503413355ja