Nemerle for OOP Programmers Week 0
さて,はじめましょうか.
Values and Variables
変数宣言ですが,
- def
- mutable
の2通りあるらしいです.defとして宣言した変数は変更不可(readonly)なのに対し,mutableで宣言した変数はいつでも変更可能なのだとか.
当然defとして宣言する場合,初期化が必須になります.
Type Inference
def/mutableによる変数宣言はこんな感じになります.
(変数の後ろにコロンをつけて,型名を置く)
def x : int = 42;
型名は省略できます(型推論ってやつ?).
def x = 42;
別にリテラルでなくても,メソッドの戻り値でも大丈夫.
mutable y = null; // do something y = SomeComplexObject ();
Methods
メソッドの一般的な構文はこんな感じ
メソッド名 ( パラメータ1 : 型, パラメータ2 : 型 ... ) : 戻り値の型
戻り値はメソッド内で最後に評価された値になるらしい.なのでreturn文はないみたい.以下が例...
add (number1 : int, number2 : int) : int { number1 + number2 }
値を返さないメソッドも定義出来て,そのときの戻り値の型はvoidだとか.このへん馴染みがあって親しみやすいですね.
Primitive Types
プリミティブ型にはこんなのがあります.やっぱり馴染みがあって親しみやすいです.
- sbyte
- short
- int
- long
- byte
- ushort
- uint
- ulong
- string
- char
- void
- float
- double
- decimal
Simple Examples
ここは昨日やったところですね.ちなみに昨日の例は以下のようにも書けるのだとか.
class Asker { public static Run () : string { System.Console.ReadLine () } } def name = Asker.Run (); System.Console.WriteLine ("Hello " + name);
気になるところもいろいろあるけど,とりあえず先に進みましょう.
Using conditions
if/elseが使えますが,ifには必ずelseを付けなければならないらしいです.ifだけにしたい場合には,ifではなくwhenを使えとのことです.
when (condition) code
これで,conditionがtrueのときのみcodeが実行されます.
conditionがfalseのときのみcodeを実行させたいならunlessを使うのだとか.
unless (condition) code
これも問題なしです.
ただこの節の最後には,条件文は関数でもある……みたいなことが書いてあって,このへん後で効いてくるのかな?とりあえず気にしませんけど.
ただ以下の例で,
unless (something) DoSomethingElse ()
最後にセミコロン(;)がないのは,はげしく気になります.
Code blocks
条件式で,条件を満たした後の処理が複数行になる場合には中カッコ{}で囲むとのこと.これもお馴染みです
Exercises
練習問題は明日やる.
とりあえずここまでは大丈夫っぽいですね.ただ次の章からはこんな風にはいかなそうです.