Tadotter - Eclipse RCP版 (1.1.2.v20090921) | 2009-09-21 15:19 |
Tadotter - JavaFX版 (2.0.1) | 2009-07-06 11:19 |
図 6.13. 値式
if式 | for式 | new式 | 変数宣言 | 割り当て式
if式は選択的にコードを評価するのに使われます。
図 6.14. if式
'if' '(' 値式 ')' ['then'] 式 ['else' 式]もしelse部があり、そしてそれら式がVoid型でないなら、そのif式は値を持っています。 もし値式がtrueなら、その値は最初の式の値になり、そうでなければ二つ目の式の値になります。 if式のような型は、とても特有な型で、サブタイプとしての最初の式の型と、 サブタイプとしての二つ目の式の型も持っています。
var x = if (bip) "Fern" else 2.68;
ここでbipはBoolean変数でなければなりません。もしbipがtrueなら、xの値は"Fern"です。 もしbipがfalseならxの値は2.68です。xの型は、StringとNumberをサブタイプとして持つ、 これ以上具体性のない型としてのObjectです。
もしelse部がないか、またはそれら式がVoid型であるなら、 そのif式はVoid型です。
例:
if (temp > 1000) { println("Reactor breach!") }
ここでは、もしtempが1000より大きいときprintlnが実行されるでしょう。
for式は一つ以上の配列を反復します。式はfor式のボディと呼ばれます。
もしボディがVoid型なら、for式はVoidを持ち、そうでなければfor式の値はボディの値からなる配列になります。
図 6.15. for式
'for' '(' in句[,...] ')' 式
図 6.16 in句
書式引数 'in' 値式 { 'where' 値式 }
この例は配列の値を持つ単純なfor式です。
var squares : Integer[] = for (x in [1..10]) x*x;配列の値は[ 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 ]です。 squaresの型は、説明に役立つように明示的に宣言されていることに注意してください。 型の推論は、その型がInteger[]であることを正しく決定します。
このfor式はVoid型です。そのブロックを単に反復するのに使われます。
for (counter in [1..3]) { println( "Help!" ); }もし複数のin句があったら、一番右のin句が最も内側のループになり、 where句がtrueになるときだけボディが評価されます。
var words = for (length in [3..6], word in ['moose', 'wolf', 'turkey', 'bee'] where word.length() >= length) word;wordsの値はこのようになります。
[ moose, wolf, turkey, bee, moose, wolf, turkey, moose, turkey, turkey ]配列のフラット化のせいと、配列にnullを追加できないことから、これは等価です。
var words = for (length in [3..6]) for (word in ['moose', 'wolf', 'turkey', 'bee']) if (word.length() >= length) word else null;
new式はJavaクラスのインスタンスを作るのに使われます。Javaのコンストラクタに引数を与えることができます。 JavaFXクラスのインスタンスを作るのにも使われますが、オブジェクトリテラルが その目的には一般に使われます。
図 6.17. new式
'new' 型名 { '(' 式リスト ')' }
例:
var stream = new java.io.FileInputStream("myBuddies.gif");
[PageInfo]
LastUpdate: 2009-07-26 17:31:10, ModifiedBy: happyhills
[Permissions]
view:all, edit:login users, delete/config:members