for...
in構文は、
オブジェクトのプロパティやArrayオブジェクトの添え字を列挙するものでしたが、
新たにコレクションの要素も列挙できるようになりました。
for_in.js
---------------------------------------------------------
import System;
import System.Collections;
var a = new ArrayList();
a.Add("ペペロンチーノ");
a.Add("お好み焼きどんぶり");
a.Add("8段アイス");
for(var i in a)
print(i);
ArrayListの要素、
"ペペロンチーノ" "お好み焼きどんぶり" "8段アイス"が次々と表示されます。
添え字ではなく要素が表示されるところがうれしいです。
以前なら、次のようにEnumeratorを使っていました。
for_in_old.js
---------------------------------------------------------
...
a.Add("8段アイス");
var e = new Enumerator(a);
for( ; !e.atEnd(); e.moveNext())
print(e.item());
これを何も見ずに書ける人は少ないと思います。
上なら自然に書けるでしょう。
JScript.NETでは明示的に型が導入されたため、
例外を型で振り分けられるようになりました。
calc.js
---------------------------------------------------------
import System;
var result : double;
var args : String[] = Environment.GetCommandLineArgs();
try {
if(args.Length != 4)
throw(1);
var a : int = Convert.ToInt32(args[1]); //整数に
var b : int = Convert.ToInt32(args[3]); //変換
var op = args[2];
if(op == "+") //演算子で場合分け
result = a + b;
else if(op == "-")
result = a - b;
else if(op == "*")
result = a * b;
else if(op == "/")
result = a / b;
else //不適当な演算子
throw(1);
}
catch(e : int) {
print("usage : " + args[0] + " num1 op num2");
print("op : '+', '-', '*', '/'");
Environment.Exit(1);
}
catch(e : System.FormatException) {
print("エラー : 2番目と4番目の引数は整数");
Environment.Exit(1);
}
print(result);
これは、
calc 1 + 2
のように使います。
引数の数が間違っていたりするとintの例外が投げられます。
calc 1 + b
のように整数を指定すべきところが整数に変換できない文字列だと、
System.FormatException型の例外が投げられます。
上のように
catchを書くと、
例外を振り分けることができます。