Spec-Zone .ru
спецификации, руководства, описания, API

Типы значения

Некоторые типы являются типами значения. У типов значения есть следующие характеристики:

В настоящий момент единственные типы значения являются Строкой, Целым числом, Числом, Булевым, и Продолжительность. У этих типов есть встроенная поддержка на языке:

Строка, Целое число, Число, Булево, и Продолжительность, обсуждаются в этом разделе.

Строка

Строка представляет символьные строки. Значение по умолчанию для Строкового типа является пустой строкой ("").

Синтаксис Строкового литерала

    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!'

Если последовательность символов включает фигурные скобки (' {' или'}',) это - строковое выражение. Любого символа можно оставить с символом наклонной черты влево (' \') - это полезно для включения фигурной скобки, кавычки, и символов наклонной черты влево. Отметьте, что одинарные кавычки могут быть включены в двойные заключенные в кавычки строки без того, чтобы быть оставленным, и визу versa. Например:

"Then she said 'shazam', and abruptly left"

Последовательность символов не должна включать возврат каретки или перевод строки. Две смежных строки автоматически объединяются во время компиляции - это удобно для того, чтобы сделать многократные строки строки. Таким образом:

def greeting = "Hello "
'there';
println( greeting );

напечатает:

Hello there

Локализация Строкового литерала

Когда приложение выводит на экран некоторый текст пользователю, требуется, чтобы текст был на собственном языке пользователя. "Локализация" является механизмом, чтобы быть в состоянии заменить строковый литерал преобразованием, выбранным во времени выполнения.

Если двойной знак хеша ## снабжается префиксом к строковому литералу, JavaFX заменяет строковым литералом с локализованным во времени выполнения, если JavaFX находит соответствующую локализацию в файлах свойств JavaFX на пути к классу. Файл свойств JavaFX содержит локализованные строки для локали как "key" = "value" пары. Локализованные строки ищутся, используя исходные строковые литералы в качестве ключей. Если никакая локализованная строка не находится, исходный строковый литерал используется в качестве значения по умолчанию. Дополнительно, явные ключи могут быть определены с квадратными скобками ([]). Например:

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.util.Locale и java.util.ResourceBundle классы платформы Java.

Кодирование файла свойств JavaFX UTF-8. Другие кодировки могут быть определены с @charset направляющий. Например:

@charset "ISO-8859-1";

определяется в первой строке файла свойств JavaFX, файл читается в ISO-8859-1 кодирование. Если строковый литерал содержит строковые выражения, соответствующие свойства должны только содержать FORMAT_STRING_LITERAL части строковых выражений, без изогнутых фигурных скобок и частей выражения. Например:

def gCal = new GregorianCalendar(1995, Calendar.MAY, 23);
def bday = ##"The birthday of Duke is {%1$tB gCal} {%2$te gCal}, {%3$tY gCal}.";

Затем файл свойств JavaFX, который содержит локализованный текст для"bday"должен быть похожим (например, для французского языка):

"The birthday of Duke is %1$tB %2$te, %3$tY." = "L'anniversaire du duc est le %2$te %1$tB %3$tY."

Отметьте что позиция тех FORMAT_STRING_LITERAL части (обозначенный [argument_index]$) может измениться в локализованных текстах.

Операции по Строке

Строковые выражения имеют Строковый тип - см. главу Выражений

Целое число

    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

Целочисленный тип представляет целые числа в диапазоне-2147483648 к 2147483647, включительно. Значение по умолчанию для Целочисленного типа является нулем (0).

Целочисленный Литеральный Синтаксис.

Целые числа могут быть представлены в десятичных, восьмеричных, или шестнадцатеричных форматах. Десятичный формат является цифрой 1 - 9, сопровождаемой цифрами в диапазоне 0 до 9, или просто 0 отдельно. Восьмеричный формат является цифрой 0, сопровождаемой цифрами в диапазоне 0 до 7. Шестнадцатеричный формат является цифрой 0 после 'x' или 'X' тогда сопровождаемый цифрами в диапазоне 0 до 9 или через F (верхний регистр или нижний регистр). Они - все допустимые Целочисленные литералы:

145
0
012
0xFF

Операции по Целому числу

Арифметические операторы (+, - *,/, и модник) работают и возвращают Целое число. Операторы сравнения (==, <> =, и т.д.) работают по Целому числу. sizeof оператор возвращает Целое число.

Число

Тип Числа представляет числа с плавающей точкой.

Синтаксис Литерала числа

NumberLiteral:
      Digits . Digitsopt ExponentPartopt 
      . Digits ExponentPartopt 
      Digits ExponentPartopt 

ExponentPart:
        ExponentIndicator SignedInteger

ExponentIndicator: one of
        e E

SignedInteger:
        Signopt Digits

Sign: one of
        + -

Следующее является допустимыми литералами Числа:

12.3
0.629
3.9e4
1.7662E-34

Операции по Числу

Арифметические операторы (+, - *, и/) работают и возвращают Число. Операторы сравнения (==, <> =, и т.д.) работают по Числу.

Булев

Булев представляет истину и ложь значений.

Булев Литеральный Синтаксис

    BooleanLiteral: one of
            true false

Эти два, и только, Булевы литералы:

true
false

Операции по Булеву

Не, и, и или операторы работают и Булев возврат. Операторы сравнения (==, <> =, и т.д.) Булев возврат. Если-выражение и в-то-время-как-выражение берут Булев в качестве их условия.

Продолжительность

Продолжительность представляет количество времени.

Синтаксис Литерала продолжительности

    DurationLiteral:
        IntegerLiteral TimeUnit
        NumberLiteral TimeUnit

    TimeUnit: one of
        ms s m h

Например:

10s
4ms
0.5h

Где 10-ые составляют десять секунд, 4 мс четыре миллисекунды, 010m составляет восемь минут, и 0.5h является получасом.