Главная страница
Навигация по странице:

  • Явное преобразование: toByte toShort toInt toLong toChartoFloat toDouble toString toBoolean Присвоение по умолчанию

  • Литералы: prefix 0x

  • Каррирование (currying).

  • По умолчанию

  • Tuple2, Tuple3 … Tuple22 Можно объявлять нужный Tuple{X} посредством синтаксиса(elem1, elem2, … elem{X})

  • скала. Программирование на Scala базовые концепции


    Скачать 1.69 Mb.
    НазваниеПрограммирование на Scala базовые концепции
    Анкорскала
    Дата25.11.2019
    Размер1.69 Mb.
    Формат файлаpptx
    Имя файлаscala_lecture_2.pptx
    ТипДокументы
    #97004

    Программирование на Scala

    БАЗОВЫЕ КОНЦЕПЦИИ

    I. Условные выражения и циклы


    If expression

    Тривиальный синтаксис, схожий с Java/C#/C++

    Условный переход представляет собой выражение (expression)

    Сравнение тернарного оператора Java и условного выражения Scala:

    I. Условные выражения и циклы


    for loop

    В Scala существует несколько вариантов синтаксиса объявления цикла

    for

    Так, например, Scala поддерживает синтаксис вида

    for (element <- iterable)

    I. Условные выражения и циклы


    for loop

    Использование генераторов в циклах for

    Использование “гардов” (guards) в циклах for

    I. Условные выражения и циклы


    for loop

    Конструкция for-yield;

    for как выражение (expression)

    for эквивалентен foreach:

    for-yield эквивалентен map:

    I. Условные выражения и циклы


    while/do-while

    Синтаксис while/do-while:

    while/do-while в Scala – это выражение (expression), которое возвращает тип Unit

    II. Операторы


    типы операторов, приоритет операторов

    Арифметические операторы:

    Операторы сравнения:

    Логические операторы:

    Битовые операторы:

    Операторы присвоения:

    + - * / %

    == != > < >= <=

    && || !

    & | ^ << >> >>>

    = += -= *= /= %= <<= >>= &= ^= |=

    Приоритет операторов (от высшего к низшему):

    () []

    !

    * / %

    + -

    >> << >>>

    > >= < <=

    == !=

    &

    ^

    |

    &&

    ||

    = += и т.п.

    , ;

    Прочие:

    () [] , ;

    II. Операторы


    оператор=метод, перегрузка операторов

    Инфиксное (infix) определение операторов:

    Перегрузка операторов:

    В Scala оператор – это метод

    III. Базовые типы


    перечисление примитивных типов и String, неявное преобразование типов

    Byte

    8 бит

    -128…127

    Short

    16 бит

    -215…215-1

    Int

    32 бит

    -231…231-1

    Long

    64 бит

    -263…263-1

    Float

    32 бит

    IEEE 754

    Double

    64 бит

    IEEE 754

    Char

    16 бит

    UTF-16

    неявное преобразование типов без потерь

    неявное преобразование типов с потерями

    Boolean

    JVM

    true false

    Примитивные типы в Scala и тип String:

    String

    not primitive

    java.lang.string

    III. Базовые типы


    объявление переменных типа, явное преобразование типов, литералы

    Явное преобразование:

    toByte toShort toInt toLong toChar

    toFloat toDouble toString

    toBoolean

    Присвоение по умолчанию:

    Целое число = Int

    Дробное число (с символом “.”, например, 3.0) = Double

    Литералы:

    prefix 0x = hex integer

    postfix L = Long

    postfix F = Float

    ‘’ = Char “” = String

    IV. Функции


    объявление функций

    Сигнатура функции:

    Функции могут быть объявлены внутри сущностей class, trait, object, а также внутри других функций

    Функции могут быть анонимными

    Функции могут содержать параметры по умолчанию

    IV. Функции


    именованные аргументы, каррирование (currying)

    Именованные аргументы. Можно поимённо передавать аргументы в функцию, при этом можно нарушать порядок аргументов

    Каррирование (currying). Можно определять более одного списка аргументов функции

    IV. Функции


    функции высшего порядка

    Функции могут выступать в качестве параметра других функций

    Функции могут возвращать другие функции

    Такие функции называются функциями высшего порядка

    Сигнатура функции-аргумента:

    IV. Функции


    call-by-value, call-by-name

    call-by-value передаваемый аргумент известен перед выполнением функции

    call-by-name вычисляет передаваемое выражение каждый раз при разыменовывании аргумента

    call-by-name синтаксис отличается объявлением параметра функции:

    def foo(expr: => Type)

    V. Коллекции (введение)

    кортежи (tuples), списки (lists), maps

    В стандартной библиотеке Scala реализованы все базовые коллекции:

    списки (линейные и индексированные), множества, maps, а также кортежи

    Неизменяемые (immutable) и изменяемые (mutable) коллекции

    По умолчанию коллекции в Scala – неизменяемые (immutable), если явно не указан package с изменяемыми коллекциями

    Коллекции в Scala имеют общий интерфейс Iterable

    В Iterable определены методы, обеспечивающие удобство работы с коллекциями (например, map)

    Часть методов определена только для конкретных коллекций и отсутствует в Iterable (например, sortBy)

    V. Коллекции (введение)

    кортежи (tuples)

    Кортежи представлены посредством сущностей

    Tuple2, Tuple3 … Tuple22

    Можно объявлять нужный Tuple{X} посредством синтаксиса

    (elem1, elem2, … elem{X})

    Доступ к элементам:

    _1, _2, _3 … _{X}

    pattern matching

    V. Коллекции (введение)

    списки (lists)

    В стандартной библиотеке Scala реализованы несколько видов списков, например, List

    for loop,

    так как List – есть реализация Iterable

    Операторы конкатенации с элементами:

    +: (prepend) и :+ (append);

    с другим списком: ++;

    при этом (для immutable) создаётся новый контейнер

    V. Коллекции (введение)

    maps

    В стандартной библиотеке Scala

    Map – общий интерфейс (trait)

    for loop,

    так как Map – наследник Iterable

    Получение элементов по ключу – оператор

    ()

    Оператор объединения maps

    ++

    V. Коллекции (введение)

    некоторые методы Iterable

    Также определены методы преобразования между типами контейнеров: toList, toMap, toSeq, toSet, toArray,

    Itearable – базовый интерфейс для всех структур данных стандартной библиотеки Scala

    В Itearable определены методы, реализованные для структур данных и облегчающие работу с ними

    map, foreach, size

    И множество других полезных методов (groupBy, flatMap, maxBy, fold, foldLeft, foldRight, head, tail и т. д.)

    V. Коллекции (введение)

    изменяемые коллекции (mutable)

    package

    scala.collection.mutable

    операторы

    изменения коллекции

    += ++=

    -=

    для maps

    изменение значения по ключу

    для списков

    изменение значения по индексу


    написать администратору сайта