Перейти до вмісту

Scala/Методи

Матеріал з Вікіпідручника

Метод, який повертає суму двох чисел

def add(x: Int, y: Int) = x + y

Метод який повертає більше з двох чисел

def max(x: Int, y: Int) = if (x > y) x else y

Повна форма запису: явно вказаний тип результату, код методу взято у фігурні дужки, що дозволило би писати у блоці більше одного виразу

def max(x: Int, y: Int): Int = {
  if (x > y)
    x 
  else 
    y
}

Починаючи з версії 2.8 Scala підтримує значення аргументів за умовчанням та іменовані аргументи.

Наступний метод бере корінь степеня y із числа x. якщо не вказати степінь використовується 2.

def root(x: Double, y: Double = 2) = Math.pow(x, 1/y) 
val two = root(8,3)
val four = root(8)

Методи у Scala можуть бути вкладеними, вкладений метод бачить змінні зовнішньго. Зазвичай параметри до методу передаються за значенням (Call-by-Value) — значення аргументів обчислюється перед викликом методу і передаються до методу. Scala підтримує також передачу параметрів за назвою (Call-by-Name). При цьому в метод передається вираз, але обчислюється не при виклику методу, а при кожному зверненні до нього в тілі методу.