add1
은 메소드 정의 강의에서 살펴본 대로 메소드가 한 줄일 경우 중괄호를 생략한 형태입니다.add2
는 익명 함수를 상수 add2
에 저장하고 있습니다. add3
은 _
를 이용했는데요. 첫 번째 _
자리에 첫 번째 매개변수가 대입되고, 두 번째 _
자리에 두 번째 매개변수가 대입됩니다.add4
와 같이 표현할 수도 있지만 자주 사용하는 방법은 아닙니다.
_
를 이용한 함수의 표기 방식은 익명 함수를 고계 함수(Higher order function)에 매개변수로 전달하는 경우에 유용하게 사용할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | object LearnScala { // ① 메소드를 정의하는 방식 def add1(x:Int, y:Int) = x + y // ② 익명함수 val add2 = (x:Int, y:Int) => x + y val mul1 =(x:Int,y:Int) => x * y // ③ 익명함수를 정의하는 다른 방식 val add3:(Int,Int)=>Int = _ + _ val mul2: (Int,Int)=>Int = _ * _ // ④ 익명함수를 정의하는 또다른 방식(잘 사용 안함) val add4 = (_ + _):(Int,Int)=>Int def main(args: Array[String]): Unit = { // 모두 두 숫자를 더해주는 역할을 하므로 같은 결과를 출력 println(s"① ${add1(42,13)}") println(s"② ${add2(42,13)}") println(s"③ ${add3(42,13)}") println(s"④ ${add4(42,13)}") println(s"⑤ ${mul1(3, 5)}") println(s"⑥ ${mul2(3, 5)}") } } | cs |
출력 〉 | ① 55 ② 55 ③ 55 ④ 55 ⑤ 15 ⑥ 15 |
'Scala' 카테고리의 다른 글
Part4 튜플) 여러 개의 값 리턴 (0) | 2019.02.23 |
---|---|
Part4 튜플) 튜플 (0) | 2019.02.23 |
Part3 메소드와 함수) 익명함수1 (0) | 2019.02.22 |
Part3 메소드와 함수) 메소드 정의 (0) | 2019.02.22 |
Part2 편리한 스칼라) 문자열 다루기 (0) | 2019.02.21 |