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
jjongguet