Kotlin? 4

2693 단어 kotlinandroidandroid

공부용으로 작성하고 있는 글입니다. 가독성이 떨어지지만 혹시나 틀린 부분이 있거나, 더 알려주실 수 있는 부분이 있으시다면 댓글로 피드백 해주시면 정말 감사하겠습니다.

https://www.youtube.com/watch?v=Q5noYbbc9uc 를 참조해 작성하였습니다.

지난 글에 이어, 람다를 표현하는 여러 방법에 대해서 알아본다.

fun main(){
    val lamda = {number : Double -> 
    number == 4.3213}
    
    println(invokeLamda(lamda))
    println(invokeLamda({it>3.22}))
}
fun invokeLamda(lamda : (Double) -> Boolean) : Boolean {
    return lamda(5.2343)
}

//출력 결과
false
true

Data Class

fun main(){
    val ticketA = Ticket("KoreanAir","yeongseo Yoon", "2022-01-11", 14)
    print(ticketA)
}

data class Ticket(val companyName:String, val name : String, var date : String, var seatNumber: Int)
//toString(), hasCode(), equals(), copy()

//출력 결과
Ticket(companyName=KoreanAir, name=yeongseo Yoon, date=2022-01-11, seatNumber=14)

Companion Object

fun main(){
    val book = Book.create()
    
    println("${book.id} ${book.name}")
}

class Book private constructor(val id: Int, val name:String){
    companion object BookFactory{
    	val myBook = "new book"
        
        fun create() = Book(0,myBook)
    }
}

//

companion object는 private property나 method를 읽어올 수 있고, 자바의 static과 같은 역할을 한다.

상속도 가능하다.

fun main(){
    val book = Book.create()
    val bookId = Book.BookFactory.getId()
    println("${bookId} ${book.name}")
}

interface IdProvider{
	fun getId() : Int
}
class Book private constructor(val id: Int, val name:String){
    companion object BookFactory :IdProvider {
    	override fun getId() : Int{
        	return 444
        }
    	val myBook = "new book"
        
        fun create() = Book(getId(),myBook)
    }
}

//출력 결과
444 new book

Object

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

data class Car(val horsePower : Int)

fun main() {
	val car = CarFactory.makeCar(10)
    val car2 = CarFactory.makeCar(200)
    
    println(car)
    println(car2)
    println(CarFactory.cars.size.toString())
}

//출력 결과
Car(horsePower=10)
Car(horsePower=200)
2

object는 싱글톤 패턴으로, 새로운 객체를 생성하지 않고 딱 한 번만 생성한다.

좋은 웹페이지 즐겨찾기