1. 스칼라에서 => 와 = 의 차이
=> 는 기본적으로 매개변수와 함수본문을 구분하는 역할이다.
그래서 아래의 예제가 있을때
val add = (x: Int, y: Int) => x + y
매개변수는 (x: Int, y: Int) 라고 정의하고
함수본문은 x+y 라는것을 정의한것이다.
이때 주의할점은 함수임에도 불구하고, val 자료형으로 선언되었다는 것이며, 이를 익명함수라고 하여
함수를 변수의 인자로 넣을수 있는것이라고 생각하면 편하다.(파이썬에서의 람다함수와 비슷하다)
반면, 일반적인 상황에서는 = 기호를 사용한다
def add(x: Int, y: Int): Int = x+y
= 는 메소드의 반환값을 지정하는 기호로 사용되었다.
일반적인 대입연산과 똑같다.
2. 고차함수와 매개변수
=> 기호를 통해서, 함수를 다른함수에 전달하는 고차함수를 만들수 있다
그래서 아래의 예제가 있을때
def operNumbers(something: List[Int], operation: Int => Int): List[Int]{
something.map(operation)
}
함수 operNumbers 의 자료형 List[Int]
인자 something의 자료형 List[Int]
인자 operation의 자료형 Int ⇒ Int
를 정의할수 있고, 해당 함수는 아래처럼 사용할수 있다.
val numbers = List(1,2,3,4,5)
val sqr = operNumbers(numbers, (x:Int) => x*x)
sqr 은 operNumbers 함수를 사용하고
해당 인자로 numbers 를 넣으며
x를 x*x로 반환하는 함수이다
'DATA Engineering > Scala' 카테고리의 다른 글
Mac에서 Scala 설치하기 (0) | 2023.07.22 |
---|---|
스칼라 문법정리1 (Variable Value, Tuple, if-else, List) (0) | 2022.10.02 |
스칼라 공부 자료 (0) | 2022.10.02 |