Tadotter - Eclipse RCP版 (1.1.2.v20090921) | 2009-09-21 15:19 |
Tadotter - JavaFX版 (2.0.1) | 2009-07-06 11:19 |
isInitializedビルトイン関数は、その引数として参照する変数を持ち、もしそれが既に設定されていたらtrueを返します。 明確な設定と見なされるときだけに注意してください。 もし変数がその型のデフォルト値で始まっていたら、 これは設定とはみなされません。 典型的な使い方は、initブロックで、初期化されていないインスタンス変数を設定することです。
class Temperature { var fahrenheit : Number; var celcius : Number; function show() { println( "Fahrenheit: {fahrenheit}, Celcius: {celcius}" ) } init { if (not isInitialized(fahrenheit)) { fahrenheit = celcius * 9 / 5 + 32 } else { celcius = (fahrenheit - 32) * 5 / 9 } } } Temperature{fahrenheit: 98.6}.show(); Temperature{celcius: 100}.show();
印字結果:
Fahrenheit: 98.6, Celcius: 37.0 Fahrenheit: 212.0, Celcius: 100.0
もし設定が発生するたびに更新するなら、on replace句の中で isInitialisedを使います。
class Temperature { var fahrenheit : Number on replace { if (isInitialized(fahrenheit)) { celcius = (fahrenheit - 32) * 5 / 9 } } var celcius : Number on replace { if (isInitialized(celcius)) { fahrenheit = celcius * 9 / 5 + 32 } } function show() { println( "Fahrenheit: {fahrenheit}, Celcius: {celcius}" ) } }
isInitializedは、インスタンス変数がデフォルト値に初期設定されたら、変更を止めることに注意してください。
[PageInfo]
LastUpdate: 2009-07-26 16:54:13, ModifiedBy: happyhills
[Permissions]
view:all, edit:login users, delete/config:members