Если вы хорошо разбираетесь в Java, вам будет очень легко выучить Scala. Самая большая синтаксическая разница между Scala и Java заключается в том, что ‘;’ символ конца строки не является обязательным.
Когда мы рассматриваем программу Scala, она может быть определена как набор объектов, которые взаимодействуют посредством вызова методов друг друга. Давайте теперь кратко рассмотрим, что означают переменные класса, объекта, метода и экземпляра.
-
Объект — объекты имеют состояния и поведение. Объект является экземпляром класса. Пример — у собаки есть состояния — цвет, имя, порода, а также поведение — вилять, лаять и есть.
-
Класс — класс может быть определен как шаблон / план, который описывает поведение / состояния, связанные с классом.
-
Методы . Метод — это в основном поведение. Класс может содержать много методов. Именно в методах пишутся логики, манипулируются данными и выполняются все действия.
-
Поля — каждый объект имеет свой уникальный набор переменных экземпляра, которые называются полями. Состояние объекта создается значениями, присвоенными этим полям.
-
Закрытие — Закрытие — это функция, возвращаемое значение которой зависит от значения одной или нескольких переменных, объявленных вне этой функции.
-
Черты — Черта заключает в себе определения методов и полей, которые затем могут быть повторно использованы путем смешивания их в классы. Черты используются для определения типов объектов путем указания сигнатуры поддерживаемых методов.
Объект — объекты имеют состояния и поведение. Объект является экземпляром класса. Пример — у собаки есть состояния — цвет, имя, порода, а также поведение — вилять, лаять и есть.
Класс — класс может быть определен как шаблон / план, который описывает поведение / состояния, связанные с классом.
Методы . Метод — это в основном поведение. Класс может содержать много методов. Именно в методах пишутся логики, манипулируются данными и выполняются все действия.
Поля — каждый объект имеет свой уникальный набор переменных экземпляра, которые называются полями. Состояние объекта создается значениями, присвоенными этим полям.
Закрытие — Закрытие — это функция, возвращаемое значение которой зависит от значения одной или нескольких переменных, объявленных вне этой функции.
Черты — Черта заключает в себе определения методов и полей, которые затем могут быть повторно использованы путем смешивания их в классы. Черты используются для определения типов объектов путем указания сигнатуры поддерживаемых методов.
Первая программа Scala
Мы можем выполнить программу Scala в двух режимах: один в интерактивном режиме, а другой в режиме сценария .
Интерактивный режим
Откройте командную строку и используйте следующую команду, чтобы открыть Scala.
\>scala
Если в вашей системе установлена Scala, будет отображен следующий вывод:
Welcome to Scala version 2.9.0.1 Type in expressions to have them evaluated. Type :help for more information.
Введите следующий текст справа от приглашения Scala и нажмите клавишу Enter —
scala> println("Hello, Scala!");
Это даст следующий результат —
Hello, Scala!
Режим сценария
Используйте следующие инструкции, чтобы написать программу Scala в режиме сценария. Откройте блокнот и добавьте в него следующий код.
пример
object HelloWorld { /* This is my first java program. * This will print 'Hello World' as the output */ def main(args: Array[String]) { println("Hello, world!") // prints Hello World } }
Сохраните файл как — HelloWorld.scala .
Откройте окно командной строки и перейдите в каталог, в котором сохранен файл программы. Команда « scalac » используется для компиляции программы Scala, и она генерирует несколько файлов классов в текущем каталоге. Один из них будет называться HelloWorld.class . Это байт-код, который будет работать на виртуальной машине Java (JVM) с помощью команды « scala ».
Используйте следующую команду, чтобы скомпилировать и выполнить вашу программу Scala.
\> scalac HelloWorld.scala \> scala HelloWorld
Выход
Hello, World!
Основной синтаксис
Ниже приведены основные синтаксисы и соглашения о кодировании в Scala-программировании.
-
Чувствительность к регистру — Scala чувствительна к регистру, что означает, что идентификатор Hello и hello будут иметь различное значение в Scala.
-
Имена классов — для всех имен классов первая буква должна быть в верхнем регистре. Если несколько слов используются для формирования имени класса, первая буква каждого внутреннего слова должна быть в верхнем регистре.
Пример — класс MyFirstScalaClass.
-
Имена методов — все имена методов должны начинаться с буквы нижнего регистра. Если для формирования имени метода используются несколько слов, то первая буква каждого внутреннего слова должна быть в верхнем регистре.
Пример — def myMethodName ()
-
Имя файла программы — имя файла программы должно точно соответствовать имени объекта. При сохранении файла вы должны сохранить его, используя имя объекта (помните, что в Scala учитывается регистр ) и добавьте « .scala » в конец имени. (Если имя файла и имя объекта не совпадают, ваша программа не будет компилироваться).
Пример. Предположим, что HelloWorld является именем объекта. Затем файл должен быть сохранен как «HelloWorld.scala».
-
def main (args: Array [String]) — обработка программы Scala начинается с метода main (), который является обязательной частью каждой программы Scala.
Чувствительность к регистру — Scala чувствительна к регистру, что означает, что идентификатор Hello и hello будут иметь различное значение в Scala.
Имена классов — для всех имен классов первая буква должна быть в верхнем регистре. Если несколько слов используются для формирования имени класса, первая буква каждого внутреннего слова должна быть в верхнем регистре.
Пример — класс MyFirstScalaClass.
Имена методов — все имена методов должны начинаться с буквы нижнего регистра. Если для формирования имени метода используются несколько слов, то первая буква каждого внутреннего слова должна быть в верхнем регистре.
Пример — def myMethodName ()
Имя файла программы — имя файла программы должно точно соответствовать имени объекта. При сохранении файла вы должны сохранить его, используя имя объекта (помните, что в Scala учитывается регистр ) и добавьте « .scala » в конец имени. (Если имя файла и имя объекта не совпадают, ваша программа не будет компилироваться).
Пример. Предположим, что HelloWorld является именем объекта. Затем файл должен быть сохранен как «HelloWorld.scala».
def main (args: Array [String]) — обработка программы Scala начинается с метода main (), который является обязательной частью каждой программы Scala.
Скала Идентификаторы
Все компоненты Scala требуют имен. Имена, используемые для объектов, классов, переменных и методов, называются идентификаторами. Ключевое слово не может использоваться в качестве идентификатора, а идентификаторы чувствительны к регистру. Scala поддерживает четыре типа идентификаторов.
Буквенно-цифровые идентификаторы
Буквенно-цифровой идентификатор начинается с буквы или символа подчеркивания, за которым могут следовать дополнительные буквы, цифры или символы подчеркивания. Символ ‘$’ является зарезервированным ключевым словом в Scala и не должен использоваться в идентификаторах.
Ниже приведены допустимые буквенно-цифровые идентификаторы.
age, salary, _value, __1_value
Ниже приведены незаконные идентификаторы —
$salary, 123abc, -salary
Идентификаторы оператора
Идентификатор оператора состоит из одного или нескольких символов оператора. Символы оператора являются печатными символами ASCII, такими как +,:,?, ~ Или #.
Ниже приведены юридические идентификаторы операторов —
+ ++ ::: <?> :>
Компилятор Scala внутренне «искажает» идентификаторы операторов, чтобы превратить их в допустимые идентификаторы Java со встроенными символами $. Например, идентификатор: -> будет представлен внутри как $ colon $ минус $ больше.
Смешанные идентификаторы
Смешанный идентификатор состоит из буквенно-цифрового идентификатора, за которым следует подчеркивание и идентификатор оператора.
Ниже приведены допустимые смешанные идентификаторы.
unary_+, myvar_=
Здесь unary_ +, используемый в качестве имени метода, определяет унарный оператор +, а myvar_ =, используемый в качестве имени метода, определяет оператор присваивания (перегрузка оператора).
Литеральные идентификаторы
Литеральный идентификатор — это произвольная строка, заключенная в обратные галочки (`…`).
Ниже приведены юридические буквенные идентификаторы —
`x` `<clinit>` `yield`
Scala Ключевые слова
Следующий список показывает зарезервированные слова в Scala. Эти зарезервированные слова не могут использоваться как константы или переменные или любые другие имена идентификаторов.
Аннотация | дело | ловить | учебный класс |
Защита | делать | еще | продолжается |
ложный | окончательный | в конце концов | за |
для некоторых | если | неявный | Импортировать |
ленивый | матч | новый | Ноль |
объект | переопределение | пакет | частный |
защищенный | вернуть | запечатанный | супер |
этот | бросать | черта характера | Пытаться |
правда | тип | вал | Var |
в то время как | с | Уступать | |
— | : | знак равно | => |
<- | <: | <% | >: |
# | @ |
Комментарии в Scala
Scala поддерживает однострочные и многострочные комментарии, очень похожие на Java. Многострочные комментарии могут быть вложенными, но должны быть правильно вложенными. Все символы, доступные внутри любого комментария, игнорируются компилятором Scala.
object HelloWorld { /* This is my first java program. * This will print 'Hello World' as the output * This is an example of multi-line comments. */ def main(args: Array[String]) { // Prints Hello World // This is also an example of single line comment. println("Hello, world!") } }
Пустые строки и пробелы
Строка, содержащая только пробел, возможно с комментарием, называется пустой строкой, и Scala полностью игнорирует ее. Токены могут быть разделены пробельными символами и / или комментариями.
Символы новой строки
Scala — это линейно-ориентированный язык, где операторы могут заканчиваться точкой с запятой (;) или символом новой строки. Точка с запятой в конце оператора обычно необязательна. Вы можете набрать один, если хотите, но не обязаны, если оператор появляется в одной строке. С другой стороны, точка с запятой требуется, если вы пишете несколько операторов в одной строке. Ниже синтаксис использования нескольких операторов.
val s = "hello"; println(s)
Скала Пакеты
Пакет — это именованный модуль кода. Например, служебный пакет Lift — это net.liftweb.util. Объявление пакета является первой строкой без комментариев в исходном файле следующим образом:
package com.liftcode.stuff
Пакеты Scala можно импортировать, чтобы на них можно было ссылаться в текущей области компиляции. Следующая инструкция импортирует содержимое пакета scala.xml —
import scala.xml._
Вы можете импортировать один класс и объект, например, HashMap из пакета scala.collection.mutable —
import scala.collection.mutable.HashMap
Вы можете импортировать несколько классов или объектов из одного пакета, например TreeMap и TreeSet из пакета scala.collection.immutable —
import scala.collection.immutable.{TreeMap, TreeSet}
Применить динамический
Черта маркера, которая позволяет динамические вызовы. Экземпляры x этой черты допускают вызовы методов x.meth (args) для произвольных имен методов meta и списков аргументов args, а также доступ к полю x.field для произвольного поля имен полей. Эта функция представлена в Scala-2.10.
Если вызов изначально не поддерживается х (то есть, если проверка типа не удалась), он переписывается в соответствии со следующими правилами: