728x90
코틀린은 객체 지향 언어 특징도 가지고 있지만 함수형 언어 특징도 가지고 있다.
if else가 expression인 것과 변수 자체가 immutable로 해서 최대한 바뀌지 않게 선언하는 것도 함수형 패러다임
잘 차용한 예
코드
package com.example.kotlin
fun main() {
// 1. 익명함수
// 2. 변수처럼 사용돼서, 함수의 argument, return 둘 다 가능
// 3. 한 번 사용되고, 재사용되지 않는 함수 ->MainActivity의 SAM
val a = fun(){ println("hello") }
val c : Int = 10
// val b : (Int) -> Unit = {
// it * 10
// println(it)
// }
val b : (Int) -> Int = {
it * 10
}
val d : (Int) -> Int = { // 입력(여러개 가능) -> 리턴 값 { 맨 마지막 줄이 리턴 값}
it * 10
}
val e = { i: Int ,j: Int -> i * j}
val f : (Int, String, Boolean) -> String = { _,b,_ -> b}
println(d(10))
hello(10,b)
}
fun hello(a: Int,b: (Int) -> Int) : (Int) -> Int {
println(a)
println(b(20))
return b
}
package com.example.kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
class MainActivity2 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//SAM
//Single Abstarct Method 단일 추상 메소드
val view = View(this)
// view.setOnClickListener{
// new View.OnClickListener(){
// @Override
// public void onClick(View:View){
//
// }
// } //구현해야 할 메소드가 오직 하나 뿐인 이 함수형 인터페이스는 코틀린에서는 람다식으로 대체 가능
// }
view.setOnClickListener({println("안녕") } //마지막일 땐 바깥쪽 ( ) 빼도 됨.
)
}
}728x90
'코틀린(Kotlin)' 카테고리의 다른 글
| (코틀린/Kotiln) Scope function (0) | 2024.02.08 |
|---|---|
| (코틀린/Kotlin) 확장함수 (0) | 2024.02.08 |
| (코틀린/Kotlin) String template (0) | 2024.02.06 |
| (코틀린/Kotlin) 타입체크&캐스팅 (0) | 2024.02.06 |
| (코틀린/Kotlin) Null(널) (0) | 2024.02.06 |