基礎
この節では、MCScriptのコメント、変数、定数、各種リテラルについて解説します。
コメント
MCScriptではコメントを二種類の方法で記述できます。
# comment
/*
comment
*/
- 「#」で行の終わりまでコメントとして扱います。
- 「/**/」で括ることによって、その範囲内をすべてコメントとして扱います。
変数
MCScriptの変数定義はシンプルです。
a = 1
MCScriptでの変数宣言は代入と同じです。空の変数を作ることはできません。
定数
変数宣言の前にconstを付けることで、定数を宣言できます。定数には値を再度代入する事ができません。
const a = 1
a = 0 # error
また、定数宣言で変数、定数をスコープ単位で上書きすることができます。
a = 1
const b = 1
if true {
const a = 2
Println(a + b) # 3
const b = 2
Println(a + b) # 4
const a = 3
Println(a + b) # 5
}
Println(a + b) # 2
公開変数
変数宣言の前にpublicを付けることで、変数を他のファイルから読み取る事ができます。この変数は定数として扱われます。
public a = 1
多値
MCScriptでは、複数の値をカンマで区切ることによって、多値として扱われます。 多値を利用することで、複数の変数にまとめて代入できます。
a, b, c = 1, 2, 3 # 1, 2, 3
a, b, c += 1, 2, 3 # 2, 4, 6
左辺の数が右辺より多い場合は、右辺の最後の値を代入します。
a, b, c = 1 # 1, 1, 1
a, b, c += 1 # 2, 2, 2
d, e, f = 1, 2 # 1, 2, 2
右辺の数が左辺より多い場合は、右辺の値が切り捨てられます。
a, b = 1, 2, 3 # 1, 2
「:=」を使うと、右辺を毎回評価します。
i = 0
a, b, c = i += 1 # 1, 1, 1
i = 0
d, e, f := i += 1 # 1, 2, 3
各種リテラル
MCScriptの基本型リテラルはJavaと変わりません。
整数
小数点のない数値リテラルはInteger型、末尾にlまたはLが付いている場合Long型として扱われます。数値リテラル内のアンダーバーは無視されます。
1 # Integer
1l # Long
浮動小数点
小数点のある数値リテラルはDouble型、末尾にfまたはFが付いている場合Float型として扱われます。 また、整数リテラルにdまたはDを付けることでDouble型として扱われます。
1.0 # Double
1f # Float
1d # Double
数値リテラルでは、他にもアンダーバーの挿入や、2進数、8進数、16進数表記をサポートしています。 |進数|表記| |--|--| |2|0b101| |8|077| |16|0xff|
文字
文字をシングルクォーテーションで括ることによってCharacter型として扱われます。エスケープシーケンスや、文字コードでの入力などもJavaと同様にサポートしています。
'A'
'\n'
'\u0041' # A
文字列
文字をダブルクォーテーションで括ることによってString型として扱われます。文字リテラルと同様に、エスケープシーケンス、文字コードでの入力をサポートしています。
"AB"
"AB\n"
"A\u0042" # AB
文字列中の改行をそのまま解釈します。
"test
test"
/*
test
test
*/
文字列テンプレート
$に続けて変数名を記述すると、文字列に値を埋め込むことができます。
a = 1 + 1
Println("1 + 1 = $a") # 1 + 1 = 2
$に続けて{}で括った式を記述すると、文字列に式の結果を埋め込むことができます。
Println("1 + 1 = ${1 + 1}") # 1 + 1 = 2
$の後に変数または{以外の文字が続いている場合、通常の$として扱われます。
Println("$100") # $100
リスト
複数の式をカンマで区切り、[]で括ることによってList型として扱われます。MCScriptのリストに型の制限はありません。
[0, 1, "A", f()]
マップ
複数のペアをカンマで区切り、{}で括ることによってMap型として扱われます。 リストと同様に型の制限はありません。
{1:"a", b:"2", f1():f2()}