1) Расширение App
Для превращения объекта в исполняемую программу можно использовать трейт App.
object Hello extends App {
println("Hello, world")
}
Код в теле объекта выполняется автоматически, как если бы он находился внутри метода main.
2)Создание главного метода (main) внутри объекта
object Hello2 {
def main(args: Array[String]) {
println("Hello, world")
}
}
33. Поддерживает ли Scala перегрузку операторов?
в Scala нет перегрузки операторов, так как нет операторов (как сущностей отличных от методов). Есть методы с символическими (операторными) именами вида '+', '/', '::', '<~' и префиксная/инфиксная/посфиксная форма записи. (https://habr.com/ru/company/golovachcourses/blog/255631/)
34. В чем разница между «If..Else» в Java и «If..Else» в Scala?
if-else в Scala позволяет выбирать между двумя альтернативами. Синтаксис похож на if-else в Java. Но тогда как if-else в Java можно использовать только для альтернативных утверждений, Scala позволяет использовать тот же синтаксис для выбора между двумя выражениями. Поэтому в Scala if-else служит также для замены тернарного оператора Java (… ? … : ….)
35. В чем разница между функцией и методом в Scala?
Конкретные различия сводятся к следующему
1. Методы не могут существовать как отдельные выражения (кроме методов с пустыми параметрами), в то время как функции могут.
2. Функция должна иметь список параметров, а метод не может иметь список параметров
3. Имя метода является вызовом метода, а имя функции представляет только сам объект функции
4. Параметр передачи по сути является методом
Функция – это блок кода, который выполняет определённую задачу. Обычно, бизнес проблема разбивается на отдельные задачи, для решения которых, создаются функции.
Метод, в Scala, это часть класса, а функция – это отдельный объект, который может быть присвоен какой-то переменной. Т.е. метод – это функция, которая объявлена элементом класса.
36. Сколько классов можно определить в исходном файле Scala? Java?
В файле scala можно объявить любое количество как обычных классов, так и вложенных , а в java можно объявить только один главный класс и множество вложенных
37. Укажите некоторые ключевые слова, которые используются Java и не требуются в Scala? Почему Scala не требует их?
Ну, например слово return в java. Оно используется для возвращения значения из метода. А в scala, не требуется писать return,чтобы вернуть нужное значение, потому что последнее выражение в теле автоматически становится возвращаемым значением метода.
Также в java есть слово void. Его не используют в scala, потому что в scala все является выражением , что означает, что все возвращает значение. Это одна из причин, почему Scala имеется тип Unit вместо типа void - потому что даже вещи, которые были бы void в Java, должны возвращать значение в Scala.
38. Что такое побочный эффект?
По сути, побочный эффект — любое действие, которое наблюдается за пределами функции или выражения помимо возврата значения, например:
операция ввода-вывода,
модификация переменной (доступной за пределами области видимости),
изменение состояния объекта (наблюдаемое вне области видимости),
возбуждение исключения (которое также не обрабатывается внутри области видимости).
О функциях или выражениях, содержащих любое из вышеперечисленных действий, говорят, что они имеют побочные эффекты, в противном случае их называют «чистыми».
Почему побочные эффекты так важны? Потому что с ними порядок исполнения имеет значение. Например, два «чистых» выражения, (связанных с соответствующими значениями):
val x = 1 + 2
val y = 2 + 3
Так как они не содержат побочных эффектов (т.е. эффектов, наблюдаемых вне выражений), мы можем вычислить эти выражения в произвольном порядке — сначала x, а затем y или сначала y, а затем x — это не повлияет на корректность полученных результатов (мы можем даже закешировать результирующие значения, если того захотим). Теперь рассмотрим следующую модификацию:
val x = { print("foo"); 1 + 2 }
val y = { print("bar"); 2 + 3 }
А это уже другая история — мы не можем изменить порядок выполнения, потому что в нашем терминале будет напечатано "barfoo" вместо "foobar" (и это явно не то, чего хотелось).
39. Что такое выражения сопоставления? (Pattern matching)
Сопоставление с примером (Pattern matching) - это механизм сравнения значений с определенным примером. При успешном совпадении значение может быть разложено на составные части.
Сопоставление с шаблоном включает последовательность альтернатив, каждая из которых начинается с ключевого слова case . Каждая альтернатива включает в себя шаблон и одно или несколько выражений , которые будут оцениваться, если шаблон соответствует. Символ стрелки => отделяет шаблон от выражений.
