Программирование на языке Scala/Синтаксис параметров методов/Ответы

2.

def method(param: Char): Char = param.toUpper

"a".map(method) // автоматическое преобразование в соотвествии с типом метода map

3.

def method(param: Char): Char = param.toUpper
def method2(param: Char): Char = param.toLower

val fun = method _  //Явное преобразование метода в анонимную функцию
val fun2 = method2 _

val tuple = (fun, fun2) // Анонимные функции являются сущностями первого класса и могут храниться в структурах данных

4.

def method3(param1: Char, param2: Int)(funParam: (Char, Char) => String): String = funParam(param1, param2.toChar)

val res = method3('a', 65)((p1, p2) => p1.toString + p2) // аргументом для параметра funParam задана некая анонимная функция 

val res2 = method3('a', 65){ (p1, p2) => 
  val str = p1.toString + p2
  str.toLowerCase
} // аргументом для параметра funParam задан некий многострочный функциональный блок

5.

def method4(param1: Char)(param2: Int = param1)(param3: (Char, Int) = (param1, param2)): String = 
  param1.toString + param2.toString + param3._1.toString + param3._2.toString

6.

def add(param1: Int, param2: Int*): Int = param1 + param2.sum

7.

add(param2 = 3, param3 = 4, param5 = 6, param6 = 7, param1 = 2, param4 = 5) // Результат 5
add(2, 3, 4, 5, 6, 7) // Результат 5

<syntaxhighlight lang="scala"> add(1, param3 = 3) </syntaxhighlight