История изменений
Исправление Bioreactor, (текущая версия) :
Процедурного?
Может «императивного»?
Императивное программирование - вычисления есть изменение состояния.
В функциональном программировании нет т.н. «побочных эффектов».
Выходные данные зависят только от входных данных.
Однако, изучение Ъ-функциональных языков требует высокой математической подготовки и высокого «порога вхождения».
Понять без подготовки, что означает
def mc(m:Map[_,Int],a:Int,f:(Int,Int)=>Boolean):Map[_,Int]=m.filter({case(k,e)=>f(e,a)})
кодерочку сложно.
Зато легко использовать:
// Некоторая карта (ассоциативный массив)
val mm = Map("A" -> 100, "B" -> 101, "C" -> 201)
// В типаже (трейте) определим
val === = (a: Int, b: Int) => a == b
val > = (a: Int, b: Int) => a > b
val < = (a: Int, b: Int) => a < b
val <= = (a: Int, b: Int) => a <= b
val >= = (a: Int, b: Int) => a >= b
val !== = (a: Int, b: Int) => a != b
// Пример использования
print (mc(mm, 101, !==))
// Выведет: Map(A -> 100, C -> 201)
Это один из простеньких примерчиков, который обычно на собеседовании задают.
Простая проверка на «вшивость».
(Попробуйте то же самое не только с Int, но и в обобщённом виде.)
Соискатели со знанием Spark, Lagom, Akka и т.п. востребованы.
Весьма востребованы в enterpriZe.
Это профи своего дела, а не доморощенные форумные болтуны типа Jopich1-куна
Исходная версия Bioreactor, :
Процедурного?
Может «императивного»?
Императивное программирование - вычисления есть изменение состояния.
В функциональном программировании нет т.н. «побочных эффектов».
Выходные данные зависят только от входных данных.
Однако, изучение Ъ-функциональных языков требует высокой математической подготовки и высокого «порога вхождения».
Понять без подготовки, что означает
def mc(m:Map[_,Int],a:Int,f:(Int,Int)=>Boolean):Map[_,Int]=m.filter({case(k,e)=>f(e,a)})
кодерочку сложно.
Зато легко использовать:
// Некоторая карта (ассоциативный массив)
val mm = Map("A" -> 100, "B" -> 101, "C" -> 201)
// В типаже (трейте) определим
val === = (a: Int, b: Int) => a == b
val > = (a: Int, b: Int) => a > b
val < = (a: Int, b: Int) => a < b
val <= = (a: Int, b: Int) => a <= b
val >= = (a: Int, b: Int) => a >= b
val !== = (a: Int, b: Int) => a != b
// Пример использования
print (mc(mm, 101, !==))
// Выведет: Map(A -> 100, C -> 201)
Это один из простеньких примерчиков, который обычно на собеседовании задают.
Простая проверка на «вшивость».
Соискатели со знанием Spark, Lagom, Akka и т.п. востребованы.
Весьма востребованы в enterpriZe.
Это профи своего дела, а не доморощенные форумные болтуны типа Jopich1-куна