Sale!

Домашнее задание №3

Original price was: $40.00.Current price is: $30.00.

Category:

Description

Rate this product

# Домашнее задание №3 (курс Scala, Naumen)
Задания описаны в файле Exercises.scala в sbt проекте, который находится в папке /homeworks/homework_3
Ниже приводится вспомогательная информация которая поможет вам справится с заданием.
Как всегда – необходимо написать тесты к своим решениям (минимум 3 теста к каждой реализованной функции решения).
## 1. Определение типа в рантайме
Для определения простого, не параметризованного типа в рантайме в Scala есть несколько способов:
– использовать x.isInstanceOf[SomeClass]
– паттерн матчинг (https://docs.scala-lang.org/ru/tour/pattern-matching.html)
– использовать x.getClass
– рефлексия
– и другие
Для приведения типов (type cast) есть 2 способа:
– x.asInstanceof[SomeClass]
– паттерн матчинг
## 2. Отсутствие правильного значения
В программировании довольно часто может отсутствовать значение вычисления функции. Напирмер в функции деления, значение деления на 0 не определено.
Отсутствие верного значения, возвращаемого из какого либо метода или функции, или невозможность верно вычислить результат можно кодировать и обрабатывать в программе разными способами.
Иногда, для этого используются целочисленные коды ошибки – это распространено в языке Си и системном программировании.
Иногда для этого используется null, а иногда для этого используется выбрасывание исключения (exception).
Это распространено в современных ООП языках (Java, C#, python, JavaScript).
В функциональных языках и в Scala в частности – любят кодировать отсуствие значений с помощью специальных контейнерных типов.
Самый простой из них – тип список, или другие коллекции похожие на список (seq, set, array, stream, и др.). Если у нас есть корректные значения которые возвращает функция – мы возвращаем список этих значений. Особенно это удобно, когда верных значений может быть несколько – например в задаче нахождения всех делителей числа. Пустой список – означает отсутсвие таких значений.
Также есть тип Option. В нем явно кодируется отсутствие значение с помощью объекта None, а наличие значение в виде контейнера Some(x).
Для краткого ознакомления для работы с Option подойдет данная статья – https://www.tutorialspoint.com/scala/scala_options.htm .
Для более глубокого – https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-5-the-option-type/ .
## 3. Параметры типов и отношение подтипов
Для решения задания №3 достаточно обратиться к материалам лекции.

Reviews

There are no reviews yet.

Be the first to review “Домашнее задание №3”

Your email address will not be published. Required fields are marked *