package com.monosoft.monopractice
//1. Lamda
// 람다식은 우리가 마치 value 처럼 다룰 수 있는 익명함수이다.
// 1) 메소드의 파라미터로 넘겨줄수가 있다. fun maxby( a : int)
// 2) return 값으로 사용할 수가 있다.
// 람다의 기본정의
// val lamdaName : Type = {argumentList -> codeBody}
//input int를 받아서 output int를 내보내서 number는 int로 타입을 추론해서 리턴을 해준다.
val square : (Int) -> (Int) = {number -> number*number}
val nameAge = {name : String, age :Int -> //리턴
"my name is ${name} I'm ${age}"
}
// 확장함수
val pizzaIsGreat : String.() -> String = {
this + " Pizza is the best!"
}
//this는 함수가 가리키는 오브젝트고 it 파라메타를 가리킨다.
fun extendString(name : String, age : Int) : String {
val introduceMyself : String.(Int) -> String = { "I am ${this} and ${it} years old "}
return name.introduceMyself(age)
}
//람다의 Return
val calculateGrade : (Int) -> String = {
when(it) {
in 0..40 -> "fail"
in 41..70 -> "Pass"
in 71..100 -> "pefect"
else -> "err"
}
}
//람다를 표현하는 여러가지 방법
fun invokeLamda(lamda : (Double) -> Boolean) : Boolean {
return lamda(5.2343)
}
fun main() {
val lamda : (Double) -> Boolean = {number : Double ->
number == 4.3213
}
println(invokeLamda(lamda))
println(invokeLamda({true}))
println(invokeLamda({it > 9.22})) //it는 넣는 파라메타가 오직 하나일때 it써도 됨
println(invokeLamda { it > 3.22 })
println(calculateGrade(98))
println(square(12))
println(nameAge("kimwonho",99))
val a = "kim"
val b = "won"
println(pizzaIsGreat(a.pizzaIsGreat()))
println(pizzaIsGreat(b.pizzaIsGreat()))
println(extendString("kimwon", 27))
}
============================================================
package com.monosoft.monopractice
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener(object : View.OnClickListener {
override fun onClick(p0: View?) {
//to do...
}
})
//1. Kotlin interface가 아닌 자바 인터페이스여야 합니다.
//2. 그 인터페이스는 딱 하나의 메소드만 가져야 합니다.
button.setonClickListener {
//to...do
}
}
}
'Kotlin > Kotlin 문법' 카테고리의 다른 글
코클린 Companion object / object (0) | 2020.12.31 |
---|---|
코틀린 POJO 데이터 클래스 (0) | 2020.12.31 |
안드로이드이 문법강의1편 (0) | 2020.12.23 |
Android AsyncTask의 구조와 제작 사항 (0) | 2020.10.13 |
ANDROID SharedPreferences 사용 (0) | 2020.09.25 |
댓글