Tadotter - Eclipse RCP版 (1.1.2.v20090921) | 2009-09-21 15:19 |
Tadotter - JavaFX版 (2.0.1) | 2009-07-06 11:19 |
いくつかの型は、値の型です。値型は次のような特徴を持っています。
現在、値型はString, Integer, Number, Boolean, Durationだけです。 これらの型は言語として組み込まれています。
String, Integer, Number, Boolean, Duration は、この章で論じられます。
Stringは文字列を表します。String型のデフォルト値は空の文字列("")です。
StringLiteral: OneStringLiteral StringLiteral OneStringLiteral OneStringLiteral: " DoubleQuoteStringCharactersopt " ' SingleQuoteStringCharactersopt ' DoubleQuoteStringCharacters: DoubleQuoteStringCharacter DoubleQuoteStringCharacters DoubleQuoteStringCharacter DoubleQuoteStringCharacter: InputCharacter but not ", {, } or \ \ InputCharacter SingleQuoteStringCharacters: SingleQuoteStringCharacter SingleQuoteStringCharacters SingleQuoteStringCharacter SingleQuoteStringCharacter: InputCharacter but not ', {, } or \ \ InputCharacter
リテラルはシングルまたはダブルクォートで囲まれます。 ダブルクォートの後に文字列が続いて、ダブルクォートで終わります。 ここで配列はカーディナリティを参照しません。(訳注:意味が、、)
例:
"brown cow"
またはシングルクォートの後に文字列が続いて、シングルクォートで終わります。
例:
'This is so %#@*^ exciting!'
もし文字列が中括弧 ('{' または '}') を含んでいたら、それは文字列表現です。 いくつかの文字はバックスラッシュ文字('\')でエスケープされるでしょう。 これは中括弧、クォート、そしてバックスラッシュを含む場合に役立ちます。 シングルクォートは、ダブルクォートで囲まれた文字列に、エスケープされることなく含まれることに 注意してください。逆もまた同様です。
例:
"Then she said 'shazam', and abruptly left"
文字列はCRやLFを含んではいけません。二つの隣り合った文字列がコンパイル時に自動的に結合されます。 これは複数行の文字列を作成するときに便利です。このように。
def greeting = "Hello " 'there'; println( greeting );
印字結果:
Hello there
アプリケーションがユーザに何かテキストを表示するとき、あなたはそのテキストをユーザ自身の言語にしたいでしょう。"ローカライゼーション"は、実行時に選択された翻訳により、文字列リテラルを置き換えることができるメカニズムです。
もし二つのシャープ##が文字列リテラルの前に付けられていたら、 JavaFXが適切なローカライゼーションをクラスパス上のJavaFXプロパティファイルに見つけた場合には、 JavaFXは実行時にローカライズされた文字列リテラルに置き換えます。 JavaFXプロパティファイルはローカライズされた文字列を"key" = "value"のペアとして含んでいます。 ローカライズされた文字列は、元の文字列をキー(key)として検索されます。 もしローカライズされない文字列が見つかった場合、元の文字列リテラルがデフォルトとして使われます。 オプションとして、明確なキー(key)を大括弧([ ])で指定できます。
例:
def mon = ##"Monday"; def about = ##[ABOUT]"JavaFX is a cool scripting language!"; println( mon ); println( about );
このスクリプトがFoo.fxで、フランス語用のJavaFXプロパティファイルFoo_fr.fxpropertiesがあるとすると、 次のローカライゼーションを含みます。
"Monday" = "Lundi" "ABOUT" = "JavaFX est un langage de script cool !"
フランス語での印字結果:
Lundi JavaFX est un langage de script cool !
より細かい制御をするために階層化されたプロパティファイルを用意することもできます。 例えば、Foo_fr_FR.fxpropertiesにフランス独自のローカライズがなされたテキストを、 そして他のフランス語(独立国)でローカライズされたテキストをFoo_fr.fxpropertiesに保存します。 そうすればJavaFXは、フランスのフランス語のロケール(fr_FR)において、 適切にローカライズされたテキストを次の順序で検索します。
Foo_fr_FR.fxproperties Foo_fr.fxproperties (original string)
ロケールとJavaFXプロパティファイルについての詳細は、Javaプラットフォームの java.util.Localeとjava.util.ResourceBundleの両クラスを参照してください。
The encoding of a JavaFX properties file is UTF-8. Other encodings can be specified with the @charset directive. For example:
JavaFXプロパティファイルのエンコードはUTF-8です。他のエンコードは@carsetディレクティブで指定できます。
例:
@charset "ISO-8859-1";
これがJavaFXプロパティファイルの一行目に指定されていれば、ファイルはISO-8859-1で読み込まれます。 もし、文字列リテラルが文字列表現を含んでいるなら、 該当するプロパティは、中括弧({})と表現部分を除いた、文字列表現の書式文字列の部分だけを含むべきです。
def gCal = new GregorianCalendar(1995, Calendar.MAY, 23); def bday = ##"The birthday of Duke is {%1$tB gCal} {%2$te gCal}, {%3$tY gCal}.";
"bday"のためのローカライズがされたテキストを含むJavaFXプロパティファイルは(例えばフランス語用では) このようになります。
"The birthday of Duke is %1$tB %2$te, %3$tY." = "L'anniversaire du duc est le %2$te %1$tB %3$tY."
これら書式文字列の部分([引数のインデクス]$で示される)は ローカライズされたテキストの中で変更することができます。
String型の文字列表現については式の章を参照してください。
IntegerLiteral: DecimalIntegerLiteral HexIntegerLiteral OctalIntegerLiteral DecimalIntegerLiteral: 0 NonZeroDigit Digitsopt Digits: Digit Digits Digit Digit: 0 NonZeroDigit NonZeroDigit: one of 1 2 3 4 5 6 7 8 9 HexIntegerLiteral: 0 x HexDigits 0 X HexDigits HexDigits: HexDigit HexDigit HexDigits HexDigit: one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F OctalIntegerLiteral: 0 OctalDigits OctalDigits: OctalDigit OctalDigit OctalDigits OctalDigit: one of 0 1 2 3 4 5 6 7
Integer型は -2147483648 から 2147483647 までの整数を、両端を含めて表します。 Integer型のデフォルト値はゼロ(0)です。
整数は十進、八進または十六進として表されます。 十進は、1から9までの数字の後に0から9までの数字が続きます。または単に0です。 八進は、0の数字の後に0から7までの数字が続きます。 十六進は、0の数字の後に'x'または'X'が続き、その後に0から9またはAからF(大文字または小文字)が続きます。 次はIntegerのリテラルとしてすべて正しいです。
145 0 012 0xFF
算術演算子(+, -, *, /, and mod)はIntegerを演算しIntegerを返します。 論理演算子(==, <, >=, etc)はIntegerを演算します。 sizeof演算子はIntegerを返します。
Number型は浮動小数点値を表します。
NumberLiteral: Digits . Digitsopt ExponentPartopt . Digits ExponentPartopt Digits ExponentPartopt ExponentPart: ExponentIndicator SignedInteger ExponentIndicator: one of e E SignedInteger: Signopt Digits Sign: one of + -
次はNumberのリテラルとして正しいです。
12.3 0.629 3.9e4 1.7662E-34
算術演算子(+, -, *, /, and mod)はNumberを演算しNumberを返します。 論理演算子(==, <, >=, etc)はNumberを演算します。
Boolean型はtrueとfalseの値を表します。
BooleanLiteral: one of true false
二つだけのBooleanのリテラル:
true false
not, and そして or演算子はBooleanを演算しBooleanを返します。 論理演算子(==, <, >=, etc)はBooleanを演算します。 if式とwhile式はその状態としてBooleanを利用します。
Duration型は時間の量を表します。
DurationLiteral: IntegerLiteral TimeUnit NumberLiteral TimeUnit TimeUnit: one of ms s m h
例:
10s 4ms 0.5h
10sは10秒、4msは4ミリ秒、010mは8分、そして0.5hは一時間の半分です。
[ページ情報]
更新日時: 2009-07-26 16:25:17, 更新者: happyhills
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー