Kuina-chan

くいなちゃん2018年12月11日


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

1Kuinの組み込みメソッド

Kuinでは、クラス以外の基本的な型にもメソッドが用意されています。 これらは組み込みで用意されており、ユーザが追加したり変更することはできません。
Kuinにおける組み込みメソッドは表1-1の通りです。
表1-1: Kuinの組み込みメソッド
メソッド 対象となる型 説明
abs int、float 絶対値
add list、stack、
queue、dict
要素の追加
and bit型、enum ビットごとの論理積
clamp int、float 値のクランプ
clampMax int、float 値の最大値をクランプ
clampMin int、float 値の最小値をクランプ
del list ポインタ位置の要素を削除
delNext list ポインタの次の位置の要素を削除
endian bit型 エンディアンの変換
exist dict 値が存在するかを取得
fill 配列 配列を同じ値で埋める
find 配列、list 配列やlistから要素を検索
findBin 配列 配列から要素を二分探索
findLast 配列、list 配列やlistから要素を逆順検索
findStr []char 文字列から部分文字列を検索
findStrEx []char 文字列から部分文字列を高機能検索
findStrLast []char 文字列から部分文字列を逆順検索
forEach dict すべての値を走査
get list、stack、
queue、dict
要素の取得
getOffset list 指定位置の要素の取得
head list ポインタを先頭に移動
ins list ポインタ位置に要素を挿入
join [][]char 文字列の配列を結合
lower []char 文字列の小文字化
max 配列 配列から最大の要素を取得
min 配列 配列から最小の要素を取得
moveOffset list ポインタを指定位置に移動
next list ポインタを次に移動
not bit型、enum ビットごとの論理否定
offset char 文字コードのオフセット
or bit型、enum ビットごとの論理和
peek stack、queue 要素を削除せずに取得
prev list ポインタを前に移動
repeat 配列 同じ配列を繰り返して配列を作成
replace []char 文字列の置換
reverse 配列 配列の逆順
sar bit型 右算術シフト
shl bit型 左論理シフト
shr bit型 右論理シフト
shuffle 配列 配列のシャッフル
sign int、float 符号
sort 配列、list 昇順ソート
sortDesc 配列、list 降順ソート
split []char 文字列を区切り文字列で分割
sub 配列 配列の部分切り出し
tail list ポインタを末尾に移動
term list ポインタがnullかどうかを取得
termOffset list 指定位置がnullかどうかを取得
toArray list リストの配列化
toArrayKey dict dictのキーの配列化
toArrayValue dict dictの値の配列化
toFloat []char float型に変換
toInt []char int型に変換
toStr int、float、
char、bool、
bit型、[]char
値の文字列化
toStrFmt int、float 書式指定による値の文字列化
trim []char 文字列の左右の空白文字の削除
trimLeft []char 文字列の左の空白文字の削除
trimRight []char 文字列の右の空白文字の削除
upper []char 文字列の大文字化
xor bit型、enum ビットごとの排他的論理和

2abs

「abs」はint、floatの絶対値を求めるメソッドです(表2-1)。
表2-1: absメソッドの定義

func abs(): 自身の型

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

3add

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

3.1list.add



listの「add」メソッドは表3-1の通りです。
表3-1: list.addメソッドの定義

func add(item: 要素の型)

item 追加する要素

3.2stack.add



stackの「add」メソッドは表3-2の通りです。
表3-2: stack.addメソッドの定義

func add(item: 要素の型)

item 追加する要素

3.3queue.add



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

func add(item: 要素の型)

item 追加する要素

3.4dict.add



dictの「add」メソッドは表3-4の通りです。
表3-4: dict.addメソッドの定義

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

key 追加する要素のキー
item 追加する要素
「key」はnull以外の値でなければなりません。 既に要素のキーが存在している場合は要素が上書きされます。

4and

「and」はビット型、enumの、ビットごとの論理積を求めるメソッドです(表4-1)。
表4-1: andメソッドの定義

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

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

5clamp

「clamp」はint、floatの値を最小値と最大値でクランプするメソッドです(表5-1)。
表5-1: clampメソッドの定義

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

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

6clampMax

「clampMax」はint、floatの値を最大値でクランプするメソッドです(表6-1)。
表6-1: clampMaxメソッドの定義

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

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

7clampMin

「clampMin」はint、floatの値を最小値でクランプするメソッドです(表7-1)。
表7-1: clampMinメソッドの定義

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

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

8del

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

func del()

次の要素が存在しないとき、ポインタは終端(null)に設定されます。
既にポインタが終端(null)ならばデバッグ実行時に例外(C0000005)が発生します。

9delNext

「delNext」はリストのポインタの次の位置の要素を削除するメソッドです(表9-1)。
表9-1: delNextメソッドの定義

func delNext()

ポインタが終端(null)もしくは次の要素が存在しないならばデバッグ実行時に例外(C0000005)が発生します。

10endian

「endian」はビット型のエンディアンを変換するメソッドです(表10-1)。
表10-1: endianメソッドの定義

func endian(): 自身の型

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

11exist

「exist」メソッドはdictに、指定したキーの要素が存在するかどうかを取得するメソッドです(表11-1)。
表11-1: existメソッドの定義

func exist(key: キーの型): bool

key 存在を確認するキー
戻り値 「key」に対応する要素が存在するならtrue、しないならfalse
「key」はnull以外の値でなければなりません。

12fill

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

func fill(value: 要素の型)

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

13find

「find」は配列やリストの先頭から末尾に向かって指定した要素を探し、最初に見つかった要素の位置を返すメソッドです。

13.1配列.find



配列の「find」メソッドは表13-1の通りです。(表13-1)
表13-1: 配列.findメソッドの定義

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

item 検索する要素
start 検索を開始する位置。 すべて検索する場合は-1を指定
戻り値 見つかった位置。 1つも見つからなかった場合は「-1」
「start」が-1でも配列の範囲内でもないとき、この関数は-1を返します。

13.2list.find



listの「find」メソッドは表13-2の通りです。(表13-2)
表13-2: list.findメソッドの定義

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

item 検索する要素
戻り値 見つかった場合はtrue、見つからなかった場合はfalse
リストのポインタの指す要素から検索し、見つかった場合にはリストのポインタはその要素を指します。

14findBin

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

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

item 検索する要素
戻り値 見つかった位置。 見つからなかった場合は「-1」
データが昇順にソートされている必要がありますが、「find」「findLast」メソッドに比べて検索速度は非常に速いです。
findBinメソッドの仕様は図14-1の通りです。
  • 複数見つかった場合はそのいずれかが返るが、どれが返るかは判らない。
  • データが昇順にソートされていなかった場合は例外は発生せず、正しい結果も返らない。
図14-1: findBinメソッドの仕様

15findLast

「findLast」は配列やlistの末尾から先頭に向かって逆順で指定した要素を探し、最初に見つかった要素の位置を返すメソッドです。

15.1配列.findLast



配列の「findLast」メソッドは表15-1の通りです。(表15-1)
表15-1: 配列.findLastメソッドの定義

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

item 検索する要素
start 検索を開始する位置。 すべて検索する場合は-1を指定
戻り値 見つかった位置。 1つも見つからなかった場合は「-1」
「start」が-1でも配列の範囲内でもないとき、この関数は-1を返します。

15.2list.findLast



listの「findLast」メソッドは表15-2の通りです。(表15-2)
表15-2: list.findLastメソッドの定義

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

item 検索する要素
戻り値 見つかった場合はtrue、見つからなかった場合はfalse
リストのポインタの指す要素から検索し、見つかった場合にはリストのポインタはその要素を指します。

16findStr

「findStr」は文字列の先頭から末尾に向かって指定した部分文字列を探し、最初に見つかった位置を返すメソッドです(表16-1)。
表16-1: findStrメソッドの定義

func findStr(pattern: []char, start: int): int

pattern 検索する部分文字列
start 検索を開始する位置。 すべて検索する場合は-1を指定
戻り値 見つかった位置。 1つも見つからなかった場合は「-1」
「start」が-1でも配列の範囲内でもないとき、この関数は-1を返します。

17findStrEx

「findStrEx」は文字列から指定した部分文字列を探し、最初に見つかった位置を返すメソッドです(表17-1)。
表17-1: findStrExメソッドの定義

func findStrEx(pattern: []char, start: int, fromLast: bool, ignoreCase: bool, wholeWord: bool): int

pattern 検索する部分文字列
start 検索を開始する位置。 すべて検索する場合は-1を指定
fromLast 末尾から先頭に向かって逆順に検索するならtrue、先頭から末尾に向かって検索するならfalse
ignoreCase 大文字と小文字を無視するならtrue、区別するならfalse
wholeWord 単語単位のみを検索するならtrue、それ以外ならfalse
戻り値 見つかった位置。 1つも見つからなかった場合は「-1」
findStrExメソッドの仕様は図17-1の通りです。
  • wholeWordにtrueを指定した場合、見つかった文字列の前後が半角英数字もしくは半角の「_」ならば無視して検索を続行する。
図17-1: findStrExメソッドの仕様
「start」が-1でも配列の範囲内でもないとき、この関数は-1を返します。

18findStrLast

「findStrLast」は文字列の末尾から先頭に向かって逆順で指定した部分文字列を探し、最初に見つかった位置を返すメソッドです(表18-1)。
表18-1: findStrLastメソッドの定義

func findStrLast(pattern: []char, start: int): int

pattern 検索する部分文字列
start 検索を開始する位置。 すべて検索する場合は-1を指定
戻り値 見つかった位置。 1つも見つからなかった場合は「-1」
「start」が-1でも配列の範囲内でもないとき、この関数は-1を返します。

19forEach

「forEach」メソッドはdictの全要素を走査するメソッドです(表19-1)。
表19-1: forEachメソッドの定義

func forEach(callback: func<(キーの型, 要素の型, kuin@Class): bool>, data: kuin@Class): bool

callback dictの各キーと要素のペアに対して呼ばれるコールバック関数。 第3引数にはdataの値が渡る
data コールバック関数に渡される任意のデータ
戻り値 走査が最後まで完了したらtrue、中断したらfalse
コールバック関数には、各キーと要素のペアが渡されるため、その関数内で目的の処理を行います。
forEachメソッドの使用例は図19-1の通りです。
  1. class Item()
  2.   +var str: []char
  3.   +var maxValue: int
  4. end class
  5.  
  6. func main()
  7.   var d: dict<[]char, int> :: #dict<[]char, int>
  8.   do d.add("A", 1)
  9.   do d.add("C", 3)
  10.   do d.add("B", 2)
  11.  
  12.   var item: @Item :: #@Item
  13.   do item.maxValue :: 0
  14.   do d.forEach(search, item)
  15.   do cui@print("\{item.str}, \{item.maxValue}") {C, 3}
  16.  
  17.   func search(key: []char, value: int, data: @Item): bool
  18.     if(data.maxValue < value)
  19.       do data.str :: key
  20.       do data.maxValue :: value
  21.     end if
  22.     ret true
  23.   end func
  24. end func
図19-1: forEachメソッドの例
12行目で@Item型のインスタンスを生成し、14行目でforEachメソッドを呼び出すときにコールバック関数「search」と一緒に渡しています。 コールバック関数内は、@Itemのインスタンスの値を適宜更新しながら、valueが最大になる要素を見つける処理になっています。
コールバック関数の戻り値がtrueなら走査は続行され、falseなら走査が中断してforEachの呼び出しを抜けます。 この例では常にtrueを返して最後の要素まで走査しています。
forEachメソッドの仕様は図19-2の通りです。
  • コールバック関数は、キーが最小のものから昇順になるように呼び出される。
  • コールバック関数内でキーの値を書き換えてはならない。
図19-2: forEachメソッドの仕様

20get

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

20.1list.get



listの「get」メソッドは表20-1の通りです。
表20-1: list.getメソッドの定義

func get(): 要素の型

戻り値 ポインタの位置の要素
ポインタが終端(null)ならばデバッグ実行時に例外(C0000005)が発生します。

20.2stack.get



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

func get(): 要素の型

戻り値 取得した要素
要素を削除せずに取得だけを行う場合は「peek」メソッドを使用します。
stackが空ならばデバッグ実行時に例外(C0000005)が発生します。

20.3queue.get



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

func get(): 要素の型

戻り値 取得した要素
queueが空ならばデバッグ実行時に例外(C0000005)が発生します。
要素を削除せずに取得だけを行う場合は「peek」メソッドを使用します。

20.4dict.get



dictの「get」メソッドは表20-4の通りです。
表20-4: dict.getメソッドの定義

func get(key: キーの型, existed: &bool): 要素の型

key 検索する要素のキー
existed 見つかったならtrue、見つからなかったならfalse
戻り値 「key」に対応する要素。 見つからなかった場合は型のデフォルト値が返る
「key」はnull以外の値でなければなりません。

21getOffset

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

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

offset ポインタからのオフセット
戻り値 ポインタからのオフセットの位置の要素
取得しようとした位置が終端(null)ならばデバッグ実行時に例外(C0000005)が発生します。

22head

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

func head()

23ins

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

func ins(item: 要素の型)

item 挿入する要素
ポインタが終端(null)ならばデバッグ実行時に例外(C0000005)が発生します。

24join

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

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

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

25lower

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

func lower(): []char

戻り値 小文字化された文字列
半角アルファベットの大文字のみが変換されます。

26max

「max」は配列から最大の要素を取得するメソッドです(表26-1)。
表26-1: maxメソッドの定義

func max(): 要素の型

戻り値 最大の要素
例えば、「[2, 4, 1, 3].max()」は「4」が返ります。

27min

「min」は配列から最小の要素を取得するメソッドです(表27-1)。
表27-1: minメソッドの定義

func min(): 要素の型

戻り値 最小の要素
例えば、「[2, 4, 1, 3].min()」は「1」が返ります。

28moveOffset

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

func moveOffset(offset: int)

offset ポインタからのオフセット
オフセットの位置の要素が存在しないとき、ポインタは終端(null)に設定されます。

29next

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

func next()

次の要素が存在しないとき、ポインタは終端(null)に設定されます。
既にポインタが終端(null)ならばデバッグ実行時に例外(C0000005)が発生します。

30not

「not」はビット型、enumの、ビットごとの論理否定を求めるメソッドです(表30-1)。
表30-1: notメソッドの定義

func not(): 自身の型

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

31offset

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

func offset(n: int): char

n オフセット値
戻り値 文字コードにnを加算した文字
例えば、「'C'.offset(-2)」とすると、「'C'」の文字コードは67ですので、-2を加算した、文字コード65の文字「'A'」が返ります。
このメソッドはオーバーフローしても例外を発生しません。

32or

「or」はビット型、enumの、ビットごとの論理和を求めるメソッドです(表32-1)。
表32-1: orメソッドの定義

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

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

33peek

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

func peek(): 要素の型

戻り値 次に取得される要素
stackやqueueが空ならばデバッグ実行時に例外(C0000005)が発生します。

34prev

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

func prev()

前の要素が存在しないとき、ポインタは終端(null)に設定されます。
既にポインタが終端(null)ならばデバッグ実行時に例外(C0000005)が発生します。

35repeat

「repeat」は同じ配列を繰り返して配列を作成するメソッドです(表35-1)。
表35-1: repeatメソッドの定義

func repeat(len: int): 自身の型

len 配列の長さ
戻り値 自身をlenの数だけ繰り返した配列
例えば、「"ab".repeat(5)」は「"ababababab"」が返ります。

36replace

「replace」は文字列中に含まれる指定文字列を、別の文字列に置換するメソッドです(表36-1)。
表36-1: replaceメソッドの定義

func replace(old: []char, new: []char): []char

old 古い文字列
new 新しい文字列
戻り値 置換後の文字列
例えば「"cdabcdcdeabcd".replace("cd", "*")」を呼び出すと、「"*ab**eab*"」が返ります。

37reverse

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

func reverse()

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

38sar

「sar」はビット型の右算術シフトを求めるメソッドです(表38-1)。
表38-1: sarメソッドの定義

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

n 任意の値
戻り値 nビットだけ右算術シフトした値
設計の理由

「sar」という名前はx86アセンブリに由来します。 「Shift Arithmetic Right」の略称です。

39shl

「shl」はビット型の左論理シフトを求めるメソッドです(表39-1)。
表39-1: shlメソッドの定義

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

n 任意の値
戻り値 nビットだけ左論理シフトした値
設計の理由

「shl」という名前はx86アセンブリに由来します。 「SHift logical Left」の略称です。

左算術シフトは、左論理シフトと常に同じ結果となるためこの「shl」で代用します。

40shr

「shr」はビット型の右論理シフトを求めるメソッドです(表40-1)。
表40-1: shrメソッドの定義

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

n 任意の値
戻り値 nビットだけ右論理シフトした値
設計の理由

「shr」という名前はx86アセンブリに由来します。 「SHift logical Right」の略称です。

41shuffle

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

func shuffle()

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

42sign

「sign」はint、floatの符号を求めるメソッドです(表42-1)。
表42-1: signメソッドの定義

func sign(): 自身の型

戻り値 自身の値が正なら1、負なら-1、0なら0が返る
例えば「(-3).sign()」は「-1」になり、「(5.2).sign()」は「1.0」になります。

43sort

「sort」は配列やlistを昇順に並び替えるメソッドです(表43-1)。
表43-1: sortメソッドの定義

func sort()

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

44sortDesc

「sortDesc」は配列やlistを降順に並び替えるメソッドです(表44-1)。
表44-1: sortDescメソッドの定義

func sortDesc()

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

45split

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

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

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

46sub

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

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

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

47tail

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

func tail()

48term

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

func term(): bool

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

49termOffset

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

func termOffset(offset: int): bool

offset ポインタからのオフセット
戻り値 ポインタからのオフセットの位置が終端(null)かどうか
ポインタが既に終端(null)のときや、オフセットの位置の要素が存在しないときもtrueが返ります。

50toArray

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

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

戻り値 変換された配列

51toArrayKey

「toArrayKey」はdictのキーを配列に変換するメソッドです(表51-1)。
表51-1: toArrayKeyメソッドの定義

func toArrayKey(): dictのキーの型を要素とする配列の型

戻り値 変換された配列

52toArrayValue

「toArrayValue」はdictの値を配列に変換するメソッドです(表52-1)。
表52-1: toArrayValueメソッドの定義

func toArrayValue(): dictの値の型を要素とする配列の型

戻り値 変換された配列

53toFloat

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

func toFloat(existed: &bool): float

existed 変換に成功したらtrue、変換できない文字列が指定されたらfalse
戻り値 変換されたfloat値

54toInt

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

func toInt(existed: &bool): int

existed 変換に成功したらtrue、変換できない文字列が指定されたらfalse
戻り値 変換されたint値

55toStr

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

func toStr(): []char

戻り値 変換された文字列
表55-2は、「toStr」メソッドの戻り値の例です。
表55-2: toStrメソッドの戻り値の例
戻り値
(5).toStr() "5"
(3.14).toStr() "3.14"
('A').toStr() "A"
(true).toStr() "true"
(0x12b8).toStr() "0x12"
(0x1234b16).toStr() "0x1234"
(0x12345678b32).toStr() "0x12345678"
(0x123456789ABCDEF0b64).toStr() "0x123456789ABCDEF0"

56toStrFmt

「toStrFmt」は値を書式指定によって文字列に変換するメソッドで、int、floatに用意されています(表56-1)。
表56-1: toStrFmtメソッドの定義

func toStrFmt(fmt: []char): []char

fmt 書式
戻り値 変換された文字列
fmtの形式は表56-2の通りで、上から順に指定します。
表56-2: toStrFmtの書式
項目 表記 説明
符号 省略 正なら符号は出力されず、負なら先頭に「-」
+ 正なら先頭に「+」、負なら先頭に「-」
(スペース) 正なら先頭にスペース、負なら先頭に「-」
詰め方 省略 左をスペースで埋めて右揃え
- 右をスペースで埋めて左揃え
0 左を「0」で埋めて右揃え
最小文字数 省略 自動で調整
1以上の整数 出力される文字列が指定した数より短いとき、
「詰め方」に従って余白が入る
小数点以下の桁数
(floatのみ)
省略 小数点以下を6桁で出力
「.」と0以上の整数 指定した桁数だけ小数点以下の値を出力
表記 d(intのみ) 10進数で出力
x(intのみ) 16進数で「a」から「f」を小文字で出力
X(intのみ) 16進数で「A」から「F」を大文字で出力
o(intのみ) 8進数で出力
u(intのみ) 10進数の符号なし整数として出力
f(floatのみ) 一般的な表記で出力
e(floatのみ) 10進数の指数表記で出力。 「1.234e+56」のような形式
E(floatのみ) 10進数の指数表記で出力。 「1.234E+56」のような形式
g(floatのみ) fとeの文字数の短いほうで出力
G(floatのみ) fとEの文字数の短いほうで出力
a(floatのみ) 16進数の指数表記で出力。 指数の底は2。 「0x8.9abp4」のような形式
A(floatのみ) 16進数の指数表記で出力。 指数の底は2。 「0X8.9ABP4」のような形式

57trim

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

func trim(): []char

戻り値 左右の空白文字が削除された文字列
削除される空白文字は、16進数で「09(タブ文字)」「0A(改行)」「0B」「0C」「0D」「20(スペース)」「A0」の文字コードです。

58trimLeft

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

func trimLeft(): []char

戻り値 左の空白文字が削除された文字列
削除される空白文字は、16進数で「09(タブ文字)」「0A(改行)」「0B」「0C」「0D」「20(スペース)」「A0」の文字コードです。

59trimRight

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

func trimRight(): []char

戻り値 右の空白文字が削除された文字列
削除される空白文字は、16進数で「09(タブ文字)」「0A(改行)」「0B」「0C」「0D」「20(スペース)」「A0」の文字コードです。

60upper

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

func upper(): []char

戻り値 大文字化された文字列
半角アルファベットの小文字のみが変換されます。

61xor

「xor」はビット型、enumの、ビットごとの排他的論理和を求めるメソッドです(表61-1)。
表61-1: xorメソッドの定義

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

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