Kuina-chan

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


プログラミング言語Kuin」の言語仕様15、Kuinのその他の仕様についてです。

1コンパイル時に定数になる値

Kuinではconstやenumの要素に指定する式など、「コンパイル時に定数にできる値」を記述すべき箇所があります。 どのような値がコンパイル時に定数にできるかを説明します。

1.1ほとんどのリテラル



ほとんどのリテラルはコンパイル時に定数になります。 ただし、文字列型以外の配列リテラル([1, 2, 3]など)と関数リテラルは除きます。
例えば、図1-1のリテラルはすべてコンパイル時に定数になります。
  • 256
  • 3.14159
  • 'A'
  • true
  • 255b8
  • "abc"
  • ['a', 'b', 'c']
  • %enumElementName
  • null
図1-1: コンパイル時に定数になるリテラルの例

1.2定数同士の演算



定数同士に対する一部の演算は、結果が定数になることが保証されています。 例えば定数同士の加算は結果も定数になることが保証されており、「5 + 3」はコンパイル時定数になります。
どの演算結果が定数になるかについては、「演算子」の各項目の説明を参照してください。

2カレントとexeやリソースのディレクトリ

カレントディレクトリとexeやリソースのディレクトリの扱いは、利便性のためにデバッグモードではリリースモードと異なります(表2-1)。
表2-1: 各種ディレクトリの扱い
ディレクトリ デバッグモード リリースモード
カレントディレクトリの初期値 .knファイルがあるディレクトリ exeを実行したディレクトリ
file@exeDir()の戻り値 .knファイルがあるディレクトリ exeが存在するディレクトリ
"res/ファイルパス" .knファイルの位置にある「res」ディレクトリ内 exeの位置にある「res.knd」ファイル内
リリースモードではexeファイルの位置が中心になりますが、デバッグ実行時では一時ディレクトリにexeが生成されて実行されるため、そのexeの位置ではなく、リソース等が存在する.knの位置が中心になるように動作します。
従って、ファイルにアクセスするときには表2-2のように書くことを推奨します。
表2-2: ファイルのアクセス方法
ファイルの種類 書き方
カレントディレクトリにあるファイル "ファイルパス"
exe配下にあるファイル file@exeDir() ~ "ファイルパス"
リソースファイル "res/ファイルパス"
カレントディレクトリはexeがあるディレクトリと同じことが多いですが、コンソールから実行するとカレントディレクトリはユーザが自由に変更できるため、exe配下のファイルにアクセスするには「file@exeDir()」を使います。
なお.knファイルを保存せずにデバッグ実行した場合には、デバッグモードでもリリースモードと同じ挙動になります。
1544534137jaf