Введение в JavaFX – Модель шахмат - Функции

ОГЛАВЛЕНИЕ

Функции

Все функции должны объявляться с использованием ключевого слова function. Для нас это требование было довольно неожиданным. Языки сценариев обычно известны своей краткостью. Это ключевое слово не кажется необходимым и является довольно большим, целых 8 символов. Компилятор должен иметь возможность распознать функцию, когда он видит ее.

Каждая функция имеет возвращаемый тип (тип возвращаемого результата). Если не объявлять возвращаемый тип, по умолчанию он будет равен Void. Это не опечатка, в Java void записывается с 'v' в нижнем регистре, при этом в Javafx Void записывается с заглавной буквы 'V'.

Возвращаемые функцией типы помещаются по аналогии с типами в переменные и параметры. Возвращаемый тип объявляется путем помещения символа двоеточия  : после закрывающей круглой скобки, вслед за которой указывается возвращаемый тип. Например, следующая функция возвращает Integer (целое число):

Функция в JavaFX, возвращающая "Integer"

function foo(i: Integer): Integer {
    i * 4;
}

Встроенные типы данных

Как видно из последнего примера кода, ключевое слово Integer представляет целочисленный тип данных. В Java это эквивалентно int. Если вам нужна десятичная дробь, можно использовать встроенный тип Number,Byte, Short, Number, Integer, Long, Float, Double, и Character (все начинаются с заглавной буквы). который представляет число с плавающей точкой. Обычно есть два числовых типа, которые можно использовать, но если вам нужны переменные определенного размера, вы можете использовать любой из следующих встроенных числовых типов:

Другие встроенные типы данных являются Boolean (логическими), они подобны bool в Java, Duration,String. При присвоении значения типу Duration type по существу указывается количество времени вместе с единицами его измерения. Например: обозначающий продолжительность времени, и

Различные "durations" (длительности) в JavaFX

100ms;  // равняется 100 миллисекундам
200s;   // 200 секунд
300m;   // 300 минут
400h;   // 400 часов

Strings действует одинаково в JavaFX и в Java. Объекты JavaFX String имеют такие же методы, что и объекты Java String, но конкатенация (соединение) строк Strings действует по-разному. Следующие примеры показывают операции над строками String в Java вместе с эквивалентными операциями в JavaFX:

Объединение строк "String" в Java и в JavaFX

// код Java 
String strA = "A";
String strB = "B";
String strC = strA + strB;
String strD = strC.replaceAll("A", "C");

// эквивалентный код JavaFX
var strA: String = "A";
var strB: String = "B";
var strC: String = "{strA}{strB}";
var strD: String = strC.replaceAll("A", "C");

Выражения

Это второй раз, когда мы встречаемся с использованием символа {} внутри String. Помещение внутри строки символа {} преобразует заключенное в скобки выражение в String. Это можно было увидеть в функции run,println("{args[0]}"). Также этот символ используется для объединения Strings, как показано в предыдущем примере кода. Можно поместить любое выражение внутрь фигурных скобок {}. Например, следующий код выводит The value of foo(7)is 49: где на экран выводился первый аргумент командной строки с помощью кода

Преобразование выражений к типу "Strings" в JavaFX

function foo(i: Integer): Integer {
    i * i;
}

def i = 7;
println("Значением foo({i}) является {foo(i)}");

{i} преобразует значение i к типу String, в то время как {foo(i)} преобразует результат foo(i) к типу String. Ониобъединяются со Strings (строкой) "The value of foo(", ") is ", and ")". Эквивалентный код на Java:

Преобразование выражений к типу "Strings" в Java

int foo(int i) {
    return i * i;
}

int i = 7;
System.out.println("Значением foo(" + i + ") является " + Integer.toString(foo(i)));

Возврат дополнительного ключевого слова

В случае если вы не заметили, мы написали две функции foo(), каждая из которых возвращает Integers. Однако никакая из функций не использует ключевое слово return. Ключевое слово return не обязательно в JavaFX. Если вы не включите ключевое слово return, возвращается значение последнего выполненного выражения. Можно использовать ключевое слово return так же, как в следующем примере:

Вы можете использовать ключевое слово "return", если хотите

function foo(i: Integer): Integer {
    return i * i;
}

def i = 7;
println("Значением foo({i}) является {foo(i)}");