20230728

기메단·2023년 7월 28일
0

TIL

목록 보기
10/44

람다

 - 메소드의 파라미터로 넘겨줄 수 있다.
 - return 값으로 사용할 수가 있다. 
람다의 기본 정의
val lamdaName(람다의 이름) : Type(input 타입과 output 타입)
->  = {argumentList  -> codeBody}

* 타입 추론하기 위해서는 Type or argumentList 한 부분에는 타입 선언을 해주어야 한다. 
확장함수
val bookCover : String.() -> String = {
    this + "bookCover is .."
}

fun extendString(name : String, age: Int) : String {
    val introduceMyself : String.(Int) -> String = {"I am ${this} and ${it} years old"} // 파라미터가 하나로만 들어가는 경우에는 it으로 생략이 가능하다.
    return name.introduceMyself(age)
}

fun main () {
    val a = "water"
    val b = "mouse"

    println(a.bookCover())
    println(b.bookCover())

    println(extendString("Ethan", 256))
    
// 1. waterbookCover is..
// 2. mousebookCover is..
// 3. I am Ethan and 256 years old
람다의 리턴
// Int 는 항상 소 가로를 사용해주어야 한다.

fun main () {
	println(calculateGrade(79))
}

val calculateGrade : (Int) -> String = { // 람다는 리턴을 할 때 마지막 표현식이 리턴의 value 타입을 지정한다.
    when(it) {
        in 0..40 -> "fail"
        in 41..70 -> "pass"
        in 71..100 -> "perfect"
        else -> "Error"
    }
}
// perfect가 나온다. 
람다를 표현하는 여러가지 방법
fun invokeLamda(lamda: (Double) -> Boolean ) : Boolean {
	return lamda(5.233)
}

fun main() {
	val lamda = {number: Double -> // 하나만 선언되었기 때문에 it 가능. 
    number == 4.313 // 위에서 선언한 lamda(5.233)과 다르니 false가 나온다.
    }
    println(invokeLamda(lamda))
    println(invokeLamda({it>3.23}) // 위에서 선언한 숫자가 크니 true 
    
    invokeLamda { it > 3.23 } // 람다함수는 위와 똑같은 식이지만, 생략해서 출력 가능하다.
    						  // it은 invokeLamda에서 선언된 하나의 피라미터를 뜻한다.  
  • split 함수를 이용해 특정 문자열을 기준으로 자르는 법.

프로그래머스에서 입문 알고리즘을 풀고 있는데 매 문제마다 몰랐던 새로운 것들이 나와서 어렵게 느껴진다. 나중에 lv1, lv2로 넘어가야하는데 벌써 머리가 어지럽다 ㅎㅎ 계속 꾸준히 해봐야지 ㅎㅎ

0개의 댓글