val lamdaEx : Type = {argumentList -> codeBody}
fun lamdaFun(args) { codeBody }
๊ธฐ๋ณธ์ ์ผ๋ก value์ฒ๋ผ ์ทจ๊ธ์ ํ๋ค.
๋ฆฌํด ํ์
์ ๋ช
์ํด์ค์ผ ํ๋ค.(๋์๋ฐ๋ผ ํ์ง ์์์๋ ์๋ค.)
{} ์ค๊ดํธ๋ฅผ ์ด์ฉํ์ฌ ๋งค๊ฐ๋ณ์/ ์ฝ๋๋ฐ๋๋ฅผ ์ ์ด์ผํ๋ค.
์ฝํ๋ฆฐ์ ํ์
์ถ๋ก ์ธ์ด์ด๋ค.
๋๋ค์์์ ์ญ์ ํ์
์ถ๋ก ์ด ๊ฐ๋ฅํ๊ธฐ์ ํ์
์ ๋ช
์ํ์ง ์์ ์ ์๋ค.
val square = {number : Int -> number*number}
val square : Int๋ฅผ ํ์ง ์์๋ ๋งค๊ฐ ๋ณ์๋ฅผ Int๋ก ์ง์ ํ์๊ธฐ์ return type ์ถ๋ก ์ด ๊ฐ๋ฅํ๋ค.
๋ง์ฝ,
val square = {number -> number*number}
๋ผ๊ณ ํ๋ค๋ฉด ์ค๋ฅ๊ฐ ๋๋ค. โ ํ์ ์ถ๋ก ํ ์ ๋ณด๊ฐ ์์ผ๋๊น.
๊ทธ๋ฌ๋, ์ด๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. โญ๏ธ
val square : Int -> Int = {number ->number*number}
์ค๊ดํธ ์์ ์ด๋ ํ ํ์ ๋ ์์ง๋ง input type -> output type์ ๋ฏธ๋ฆฌ ๋ช ์ํ์์์ผ๋ก ๋ฌธ์ ์์ด ์คํ๋๋ค.
String class -> getLength(), toInt(), compareTo()
val ex : String.() -> String = {
this + "extend"
}
val a = "kotlin "
println(a.ex)
// kotlin extend๊ฐ ์ถ๋ ฅ๋๋ค.
this๋ ex๊ฐ์ฒด๋ฅผ callํ๋ object์ด๋ค.
์ฌ๊ธฐ์ this๋ a๊ฐ ๋ ๊ฒ์ด๋ค. a๋ kotlin ์ด๊ณ
๊ทธ๋์ ๋ฐํ ๊ฐ์ kotlin extend๊ฐ ๋ ๊ฒ์ด๋ค.
fun exString(args:String, num:Int) : String{
val another : String.(Int) -> String = {this+it}
return args.another(num)
}
args+num์ด ๋ต์ด ๋ ๊ฒ์ด๋ค.
button.setOnClickListener(object : OnClickListener{
override fun onClick(view:View){
doSomethin()
}
})
๋๋ค๋ฅผ ์ด์ฉํ๋ฉด ๊ตฌํ ์ฝ๋๋ง ์์ฑํ์ฌ ์ธ์๋ก ๋๊ฒจ ์ค ์ ์๋ค.
์ธ์์ ํ์
์ ์ด๋ฏธ ์ ์๋์ด ์๊ธฐ์, ํ์
์ ๋ง๊ฒ ๋๋ค ํํ์๋ง ์์ฑํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์์์ ์ต๋ช
๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ค๋ค.
fun setOnClickListener(listener : (View) -> Unit)
button.setOnClickListener({view -> doSomething() })
๋ํ, ์ปดํ์ผ๋ฌ๋ ์ธ์์ ํ์ ์ ์ด๋ฏธ ์๊ณ ์๊ธฐ์ ์๋์ ๊ฐ์ด ์ธ์๋ฅผ ์๋ตํ ์ ์๋ค.
button.setOnClickListener() {doSomething()}