고급문법
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())
'공부 > Android' 카테고리의 다른 글
Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린 둘째마당 (3~5장) (0) | 2024.05.25 |
---|---|
Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린 첫째마당 (1~2장) (0) | 2024.05.19 |
3강으로 끝나는 코틀린 안드로이드 개발 섹션 0 (0) | 2024.04.13 |
하루 만에 배우는 안드로이드 앱 만들기 with 코틀린 - 4주차 (1) | 2024.04.06 |
하루 만에 배우는 안드로이드 앱 만들기 with 코틀린 (2주차) (0) | 2024.03.27 |