valueExpression

 Рисунок 6.13. valueExpression

valueExpression

ifExpression

ifExpression используется, чтобы выборочно оценить код.

 Рисунок 6.14. ifExpression

ifExpression

Если еще часть присутствует, и ни одно из выражений не имеет Пустой тип, то у ifExpression есть значение. То значение является значением первого выражения, если valueExpression является истиной, и иначе значением второго выражения. Тип такого ifExpression является наиболее определенным типом, который имеет тип первого выражения как подтип и также имеет тип второго выражения как подтип. Например:

var x = if (bip) "Fern" else 2.68;

Здесь, четностью с чередованием по битам должна быть Логическая переменная. Если четность с чередованием по битам является истиной, значением x является "Папоротник". Если четность с чередованием по битам является ложью, значение x 2.68. Тип x является Объектом так нет больше определенного типа, у которого есть Строка и Число как подтипы.

Если не еще есть часть, или любое выражение имеет Пустой тип, то у ifExpression есть Пустой тип. Например:

if (temp > 1000) {
   println("Reactor breach!")
}

Здесь println будет выполняться, если временный файл будет больше чем 1000.

forExpression

forExpression выполняет итерации свыше одной или более последовательностей. Выражение вызывают телом forExpression. Если тело имеет Пустой тип, то forExpression имеет Пусто. Иначе значение forExpression является последовательностью, состоящей из каждого значения тела.

 Рисунок 6.15. forExpression

forExpression

 Рисунок 6.16. inClause

inClause

Этот пример показывает простой для выражения, значение которого является последовательностью:

var squares : Integer[] = for (x in [1..10]) x*x;

Значения квадратов [ 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 ]. Отметьте, что тип квадратов явно объявляется в иллюстративных целях, вывод типа правильно решил бы, что тип является Целым числом [].

Это для выражения имеет Пустой тип. Это привыкло просто к initerate по блоку:

for (counter in [1..3]) {
   println( "Help!" );
}

Если есть многократные inClauses, самый правый inClause является самым внутренним циклом, тело только оценивается для случаев, где где-пункт является истиной. Таким образом:

var words = for (length in [3..6], word in ['moose', 'wolf', 'turkey', 'bee'] where word.length() >= length) word;

Таким образом значение слов:

[ moose, wolf, turkey, bee, moose, wolf, turkey, moose, turkey, turkey ]

Из-за последовательности flattenning и потому что нуль никогда не добавляется к последовательности, это эквивалентно:

var words = for (length in [3..6]) for (word in ['moose', 'wolf', 'turkey', 'bee']) if (word.length() >= length) word else null;

newExpression

newExpression может использоваться, чтобы создать экземпляр Java class. Это позволяет параметрам конструктору Java быть обеспеченными. Это может также использоваться, чтобы создать экземпляр JavaFX, class, но objectLiteral обычно используется с этой целью.

 Рисунок 6.17. newExpression

newExpression

Например:

var stream = new java.io.FileInputStream("myBuddies.gif");




Spec-Zone.ru - all specs in one place