본문 바로가기
공부/Android

코틀린 3강으로 끝내기 feat.안드로이드 개발 섹션 1

by 유스베리이 2024. 5. 4.

고급문법

1. 람다

람다식은 우리가 마치 value 처럼 다룰 수 있는 익명함수이다

1) 메소드의 파라미터로 넘겨줄 수 있다. fun macBy(a :Int)

2) return 값으로 사용할 수 있다. 

 

 

람다의 기본 정의

val lamdaName : Type = {argumentList -> codeBody}

val square : (Int) -> (Int) = {number : Int -> number*number }

val nameAge = (String,Int) -> String = { name : String, age : Int ->
	"my name is ${name}; Im ${age}"
fun main(){
	println(square(12)
    println(nameAge("joice",99)
    println(a.pizzaIsGreat())
    println(b.pizzaIsGreat())}
    println(calculateGrade(97))
    
    
    
    val lamda = {number : Double -> number == 4.3213 }
    
    println(invokeLamda(lamda))
    println(invokeLamda({it > 3.22}))
    
    println(invokeLamda{ it > 3.22  })
    
    
    
    
    
    
    
   
}
 //확장함수
    val pizzaIsGreat : String.() -> String = {
	this + " Pizza is the best"
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 -> "perfect"
        else -> "error"
        }
        }
        
  //람다를 표현하는 표현식
  fun invokeLamda(lamda : (Double) -> Boolean ) : Boolean {
  
 	 return lamda(5.2342)
  }

 

2. Data Class

데이터를 담은 class

data class Ticket(val companyName : String, val name : String , var date: String , var seatNumber : Int)

//toString(). hashCode(). equals(), copy()

fun main(){
	val ticketA =  Ticket ( "koreanair","joyceHontg" , "2020-12-24", 14)
    val ticketB =  Ticket ( "koreanair","joyceHontg" , "2020-12-24", 14)
    
    println(ticketA)
     println(ticketB)

 

3.Companion Object

class Book private construction (val id : Int, val name : String){
	companion object Bookfactory : IdProvider{
    
    	override fun getId ( : Int {
        	return 44}
            
            vaal myBook ="new book"
            
            
    
    		fun create() = BookgetId(), myBook)} }
        
        
  interface IdProvider {
  	fun getId() : Int
    
    }
 fun main() {
 
 	val book:Book = Book.create()
    val bookId = Book.BookFactory.getId()
    println("${book.id) ${book.name}")
    
    }

 

4. Object

object CarFactory {
	val cars : MutableList<Car> = mutableListOf<Car>()
    fun makeCar(horsePover: Int) : car {
    val car = Car(horsePower)
    cars.add(car)
    return car
}
data class Car(val horsePower : Int)



fun main() {

	val car : Car = Carfactory.makeCar(10)
    val car2 : Car = Carfactory.makeCar(120)
    
    println(car)
    println(car2)
    println(CarFactory.cars.size.toString())