基礎

この節では、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()}

results matching ""

    No results matching ""