Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/00571.jsonl.gz/3

Kuinで関数の中に書くことができる文とブロックは、概ね図1-1の構造をしています。
例えば図1-2のように、変数定義は文、関数定義はブロックの構造になっています。
文は1行で書かれ、ブロックは複数行に渡って書かれるという違いがあります。 ブロックの中にはさらに文やブロックを入れることができます。
Kuinにおける文とブロックは表1-1の通りです。
それぞれの文とブロックについて、以下で詳しく説明します。
「alias文」は既存の型に別名を付けて新しい型を定義します(図2-1)。
alias文は、関数の外のグローバルな領域や、クラス内にも記述できます。
「assert文」は条件を満たさなかった場合、デバッグ実行時に例外(0xE9170000)を発生させる文です(図3-1)。
満たすべき条件を書くことで、プログラムの信頼性を高めることが目的です。 条件はboolで書きます。
assert文は、リリースビルド時には存在しないものとして読み飛ばされるため、リリースビルド時には実行時の処理負荷はありません。
「break文」はブロックの処理を抜ける文です(図4-1)。
break文の仕様は図4-2の通りです。
「const文」は定数を定義します。 定数とは、値を書き換えることができない変数です。 定義の方法は変数と同様です(図5-1)。
const文は、関数の外のグローバルな領域や、クラス内にも記述できます。
const文の仕様は図5-2の通りです。
「do文」は式を実行する文です(図6-1)。
do文の仕様は図6-2の通りです。
「excode文」は、コンパイル後に生成されるコードを直接記述できる文です(図7-1)。
上級者向け機能です。
コンパイルオプションの「-e」に指定する環境により、仕様が異なります。
「include文」は、別ファイルに書かれているソースコードを埋め込める文です(図8-1)。
include文を記述したソースコードの名前が「sample.kn」で、include文に指定したファイル名の一部が「part」だった場合、「sample.part.kn」というファイルが読み込まれて埋め込まれます。
「sample.part.part2.kn」のように、多段階に埋め込むことはできません。
埋め込まれたソースコードは、include文を記述したソースコード内に直接書いたのと同じように扱われます。
「ret文」は関数を抜ける文です(図9-1)。
ret文は、戻り値の型を指定した関数では戻り値を返さなければならず、戻り値の型を指定しなかった関数では戻り値を返してはなりません。
ret文の仕様は図9-2の通りです。
「skip文」はループを1回スキップする文です(図10-1)。
skip文の仕様は図10-2の通りです。
「throw文」は例外を発生させる文です(図11-1)。
例外が発生するとその瞬間から関数を次々と抜けてアプリは終了しますが、tryブロックを使うと途中で発生した例外を捕まえて処理を続行することができます。 エラーが起こった場所で例外を発生させ、エラーを処理したいところでtryブロックを使います。
var文は、関数の外のグローバルな領域や、クラス内にも記述できます。
「blockブロック」は何もしないブロックです(図13-1)。
スコープを分けたり、breakで抜ける用途で使われます。
「classブロック」はクラスを定義します。 詳しくは、クラス
を参照してください。
classブロックは、関数の外のグローバルな領域や、クラス内にも記述できます。
「enumブロック」は列挙型を定義します。 詳しくは、列挙型
を参照してください。
enumブロックは、関数の外のグローバルな領域や、クラス内にも記述できます。
「forブロック」は数え上げながらループするブロックです(図16-1)。
forブロックでは、初期値から終値まで増減値ずつ増減しながら繰り返します。 増減値は省略すると「1」と解釈されます。
forブロックの仕様は図16-2の通りです。
「funcブロック」は関数を定義します。 詳しくは、Kuinの関数定義
を参照してください。
funcブロックは、関数の外のグローバルな領域や、クラス内にも記述できます。
「ifブロック」は条件によって処理を分岐させるブロックです(図18-1)。
ifブロックでは、複数のelif節を連ねたり、最後にelse節を書くこともできますが、いずれも省略できます。
ifブロックの仕様は図18-2の通りです。
「switchブロック」は値によって処理を分岐させるブロックです(図19-1)。
switchブロックでは、複数のcase節を連ねたり、最後にdefault節を書くこともできます。 default節は省略できます。
case節の値は「,」で区切って複数指定したり、「a to b」と書くことで「a以上b以下」という範囲を指定することもできます。
switchブロックの仕様は図19-2の通りです。
「tryブロック」は発生した例外を処理するブロックです(図20-1)。
try節内で例外が発生すると、該当するcatch節にジャンプして処理が行われます。 また、例外が発生しても発生しなくてもfinally節は必ず実行されます。
例外が発生すると次々と関数を抜けていきますが、catch節を使うことで例外を捕まえることができ、finally節を使うことでリソース解放などの確実に行いたい処理を行っておくことができます。
catch節の値は「,」で区切って複数指定したり、「a to b」と書くことで「a以上b以下」という範囲を指定したり、省略することもできます。
最後にfinally節を書くこともできますが、省略できます。
tryブロックの仕様は図20-2の通りです。
「whileブロック」は条件を満たす限りループし続けるブロックです(図21-1)。
skipを指定すると、最初の条件判断をスキップし、必ず1回は処理が行われるようになります。