Last active
June 30, 2020 06:56
-
-
Save humanscape-david/ec47dde8341b35b2c6cc9968af842fc0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 콜백 리스너 중첩 예 | |
| fun main() { | |
| val result = object : CallBack1 { | |
| override fun callBack(x1: String): CallBack2 { | |
| return object : CallBack2 { | |
| override fun callBack(x2: String): CallBack3 { | |
| return object : CallBack3 { | |
| override fun callBack(x3: String): CallBack4 { | |
| return object : CallBack4 { | |
| override fun callBack(x4: String): CallBack5 { | |
| return object : CallBack5 { | |
| override fun callBack(x5: String): String { | |
| return x1 + x2 + x2 + x3 + x4 + x5 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| println(result | |
| .callBack("1") | |
| .callBack("2") | |
| .callBack("3") | |
| .callBack("4") | |
| .callBack("5")) // 12345 | |
| } | |
| interface CallBack1 { | |
| fun callBack(x1: String): CallBack2 | |
| } | |
| interface CallBack2 { | |
| fun callBack(x2: String): CallBack3 | |
| } | |
| interface CallBack3 { | |
| fun callBack(x3: String): CallBack4 | |
| } | |
| interface CallBack4 { | |
| fun callBack(x4: String): CallBack5 | |
| } | |
| interface CallBack5 { | |
| fun callBack(x5: String): String | |
| } | |
| # 콜백 리스너 중첩 예를 고차 함수와 커링을 사용해서 개선 | |
| fun main(args: Array<String>) { | |
| val result = callback("1")("2")("3")("4")("5") | |
| println(result) // 12345 | |
| val result1 = callback("1")("2") | |
| println(result1("3")("4")("5")) // 12345 | |
| } | |
| val callback: (String) -> (String) -> (String) -> (String) -> (String) -> String = { v1 -> | |
| { v2 -> | |
| { v3 -> | |
| { v4 -> | |
| { v5 -> | |
| v1 + v2 + v3 + v4 + v5 | |
| } | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment