-
[Kotlin] 람다함수Kotlin 2022. 9. 14. 15:13
package days01 fun main(){ val r1:Int // 코틀린에서 변수를 선언하면 보통 변수 이름 앞에 콜론(:)과 함게 자료형을 기술함 val r2=100 // 변수에 입력되는 값이 함수라면 자료형을 따로 쓰지 않아도 그 변수는 Int형으로 생성됨 // 변수를 선언하고 초기화되는 값의 자료형이 명확하다면 변수 선언의 자료형 부분은 생략 가능함 val r3= testFun1(100,200) // 함수의 리턴값의 자료형이 Int 자료형으로 명확하기 때문에 따로 변수의 자료형을 쓰지 않음 val r4=testFun2(100,200) val r5=testFun3(100,200) println("--------------------------------------") } // 3. 리턴값의 자료형이 아래와 같이 함수와 정수의 연산이어서 그 결과도 정수라면 // 그리고 그 정수가 리턴될 것이라면 함수의 리턴자료형도 생략 가능함 fun testFun3(a1:Int, a2:Int):Int=a1+a2 // 2. 함수의 리턴값이 간단한 수식으로 해결된다면 =과 함께 연결하여 return 명령을 대신함 // testFun1과 testFun2는 같은 동작을 하는 함수 fun testFun2(a1:Int, a2:Int):Int=a1+a2 // 1. 함수의 리턴값이 호출된 곳에서 리턴값을 받는 변수의 자료형을 결정함 fun testFun1(a1:Int, a2:Int): Int{ return a1+a2 }
fun main(){ val r6=lambda1(100,200) println("r6:$r6") val lambda3:(Int, Int) -> Int={a1, a2->a1+a2} // 헤더를 생략하지 말고 함수 바디쪽 자료형을 생략한 형태 val r8=lambda3(100,200) println("r8:$r8") // 함수의 몸체에 여러 라인의 명령이 필요한 경우 원래의 함수 형태 호출 val lambda4={a1:Int, a2:Int -> val r1=a1+a2 val r2=a1-a2 r1*r2 // 맨 마지막에 리턴값만 쓰면 람다 함수의 리턴값으로 인식됨 } val r9=lambda4(100,200) println("r9:$r9") // 매개변수가 리턴값이 없는 람다 함수 val lambda5:() -> Unit={print("lambda5 호출")} lambda5() } // 람다함수: 함수의 초간단 간략형 표현으로 함수의 몸체를 변수에 담아 사용하도록 변형한 형태 val lambda1:(Int, Int) -> Int={a1:Int, a2:Int -> a1+a2} // 람다함수의 풀 버전 사용 // (Int, Int): 매개변수의 갯수와 자료형 // {a1:Int, a2:Int -> a1+a2}: 앞에 정의된 자료형에 맞춰 사용되는 // 실제 매개변수(a1, a2)와 실제 리턴값(a1+a2) // Int= & -> a1+a2: 리턴값의 자료형과 리턴값 // lambda1: 함수의 이름 // :(Int, Int) -> Int: 함수의 전체 자료형(매개변수와 리턴값)
성적표 출력
package days01 import java.text.DecimalFormat fun main(){ print("국어 점수 입력: ") val kor:Int=readLine()!!.toInt() print("영어 점수 입력: ") val eng:Int=readLine()!!.toInt() print("수학 점수 입력: ") val mat:Int=readLine()!!.toInt() val tot:Int=sumscore(kor, eng, mat) val avg: Double=averagescore(tot) prnscore(kor, eng, mat, tot, avg) } val sumscore:(Int, Int, Int) -> Int={kor:Int, eng:Int, mat:Int -> kor+eng+mat} val averagescore={tot:Int -> tot/3.0} val prnscore={kor:Int, eng:Int, mat:Int, tot:Int, avg:Double -> val df1= DecimalFormat("#,##0.0") println("\t\t===성적표===") println("국어\t영어\t수학\t총점\t평균") println("------------------------------") print("$kor\t$eng\t$mat\t$tot\t${df1.format(avg)}\t") }
'Kotlin' 카테고리의 다른 글
[Kotlin] Loop (0) 2022.09.14 [Kotlin] 익명함수 (0) 2022.09.14 [Kotlin] 조건문 when (0) 2022.09.14 [Kotlin] 조건문 if (0) 2022.09.14 [Kotlin] 연산 (0) 2022.09.14