일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Adapter 패턴
- akka 강좌
- Play2
- Golang
- 안드로이드 웹뷰
- 하이퍼레저 패브릭
- 파이썬
- hyperledger fabric
- 그라파나
- 하이브리드앱
- Play2 로 웹 개발
- 스칼라 강좌
- 이더리움
- play 강좌
- 파이썬 머신러닝
- 플레이프레임워크
- 파이썬 동시성
- Hyperledger fabric gossip protocol
- 파이썬 데이터분석
- 주키퍼
- CORDA
- 스칼라
- Akka
- 엔터프라이즈 블록체인
- 스칼라 동시성
- Actor
- play2 강좌
- 스위프트
- 블록체인
- 파이썬 강좌
- Today
- Total
HAMA 블로그
스칼라 강좌 (35) lambda 익숙해지기 본문
lambda
스칼라에서의 lambda 식은 다음과 같다.
( x : Int ) => Int
이것은 Int 형을 받아서 String 을 리턴하는 함수에 대한 람다식이다.
object lambdaTest extends App {
def test = (x:Int) => x + 1
log (test(3).toString())
}
위의 test 메소드는 다음과 같다.
def test (x: Int):Int = {
x + 1
}
다음 코드를 살펴보자. 함수의 매개변수로 람다식이 사용되었다.
object lambdaTest extends App {
def test (f: Int => String) {
log(f(3))
}
def logging (x: Int ):String = {
x.toString()
}
test(logging)
}
- test 함수는 Int 를 매개변수로 갖고 String 을 리턴해주는 어떤 함수를 매개변수로 받는다.
- test 함수에 들어갈 매개변수인 logging 함수는 보는 바와 같이 Int 형을 매개변수로 갖고 String 을 리턴해주는 함수이다.
다음 코드는 좀 더 복잡하게 꼬아 놓았다.
apply 메소드는 매개변수로 함수를 받는데 그 함수의 모양이 String 을 받아서 String 을 리턴해주는것이 아니라 String 을 받아서 다시 함수를 리턴해 준다. 그 함수는 String 을 받아서 String 을 리턴해주는 함수이다.
사실 글로써 설명하니깐 더 헥깔릴거라 본다. ;;
따라서 람다식의 모양이 x => y => x + y 이 되었다.
설명하자면 x 를 매개변수로 받아서 y => x + y 라는 함수를 리턴한다는 것이다.
object Test {
type HandlerProps = String => String
def apply(f : String => HandlerProps): Unit = {
val g = f("HELLO")
log(g("world"))
}
}
object lambdaTest extends App {
Test{
x => y => x + y
}
} 결과 : HELLOworld
실제 프로젝트에서는 이런 함수합성에 관한 코드를 많이 보게 될 것이기 때문에 익숙해져야한다.
'Scala' 카테고리의 다른 글
스칼라 강좌 (37) 동시성을 위한 ExecutorContext (1) | 2017.02.21 |
---|---|
스칼라 강좌 (36) {} 익숙해지기, {} 는 어디서 사용되는가? (0) | 2017.02.17 |
스칼라 강좌 (34) 동시성을 위한 Future (0) | 2017.02.16 |
스칼라 강좌 (32) - 가변 인자 처리 ( * 과 _* ) (0) | 2016.12.15 |
스칼라 강좌 (32) -타입기초/ 타입별칭 /추상 타입/ 타입 경계 / 변성 (0) | 2016.12.07 |