μ΄νν°λΈ μ½νλ¦°μ κ±°μ λ€ μ½μ΄ κ°λ€.
μ΄νν°λΈ μλ°λ μ½νλ¦°μ΄λ λ°±μλμμ APIλ₯Ό μ€κ³νλ κ² λΏλ§ μλλΌ νΉμ λΆμΌμ μ¬μ©μ κ΅νλμ§ μκ³ ,
μΈμ΄ μ체λ₯Ό μ΄λ€μμΌλ‘ μμ±ν΄μΌ νλμ§λ₯Ό μλ €μ£Όλ μ± μ΄λ€.
λλ μ½νλ¦°μΌλ‘ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λ€κ³ μμ§ μκΈ° λλ¬Έμ,
λ°±μλ κ°λ°μ νμν λΆλΆμ λ°λ‘ λμκΈ°κ³ μ νΉμ μ μ©ν μμ΄ν λ€λ§ λΈλ‘κ·Έμ μ 리νλ€.
λ°λ‘ κΈλ‘ μ 리νμ§ μμ λλ¨Έμ§ μ±ν°λ μ½μ΄κ°λ©° μ½νλ¦°μ λν΄ λ κΉμ μ΄ν΄λ₯Ό νλ € λ Έλ ₯νλ€.
Inline νμ μκ° μ°Έ λ§μ΄ λμλλ°, κ±°μ κ³ μ°¨ ν¨μλ ν λ 벨 ν¨μμ λ§μ΄ μ¬μ©νλ κ²μΌλ‘ νμ΅νλ€.
μ±λ₯μ λΆλΆμμ κ°μ²΄λ₯Ό λ°λ‘ μμ±νμ§ μκ³ ν¨μ λ΄λΆλ‘ νΈμ λκΈ°μ μ°μνλ―λ‘, μΈμ κΉμ κ°λ μ΄μλ€.
ν±λ 벨 ν¨μλ κ³ μ°¨ ν¨μλ₯Ό μ νΈλ¦¬ν° ν¨μλ₯Ό μ μΈνλ©΄ Inline νμ μλ₯Ό μ μ¬μ©νμ§ μμ κ²μ΄κΈ°μ, μ½κΈ°λ§ νλ €λ€κ° ν΄λμ€μμμ μ¬μ©μ
μ μ©νκ² λ€λ μκ°μ νλ©° μ 리ν΄λ³Έλ€.
Inline ν΄λμ€
inline class Id(private val value: String) {
// ....
}
// μ½λ
val id: Id = Id("hello")
// μ»΄νμΌ λ μ½λ
val id: String = "hello"
μμ±μ νλ‘νΌν°κ° νλμΈ ν΄λμ€μ μΈλΌμΈ νμ μλ₯Ό λΆμ΄λ©΄,
ν΄λΉ κ°μ²΄λ₯Ό μ¬μ©νλ μμΉκ° λͺ¨λ νλ‘νΌν°λ‘ κ΅μ²΄λλ€!!
μ½λλ‘μλ νμ μ μ΄μ©νκΈ°μ κ°λ μ±κ³Ό νμ μμ μ±μ 보μ₯ λ°κ³ ,
μ±λ₯μ μΌλ‘λ κ°μ²΄λ₯Ό μμ±νμ§ μκΈ°μ, μΌμμ΄μ‘°μ ν¨κ³Όλ₯Ό μ»μ μ μλ€.
λ§μΉ VO κ°μ²΄λ₯Ό 보λ κ² κ°λ€. μ±λ₯μ κ³λ€μΈ.
μ!!
λ νλ, μΈλΌμΈ ν΄λμ€μ λ©μλλ λͺ¨λ μ μ λ©μλλ‘ λ§λ€μ΄μ§λ€.
μΈλΌμΈ ν΄λμ€ μ¬μ© μν©
μΈ‘μ λ¨μλ₯Ό ννν λ,
νμ μ€μ©μΌλ‘ λ°μνλ λ¬Έμ λ₯Ό λ§μ λ,
interface Timer {
fun callBefore(time: Int, callback: () -> Unit)
}
timeμ λ¨μκ° λͺ ννμ§ μλ€.
μ΄λ¬ν APIλ λ¬Έμ μ μ΄ λΆλͺ νλ€.
νλΌλ―Έν°μ time. λμ timeMillis, timeSeconds λΌλ λ€μ΄λ°μΌλ‘ λ체ν μ μλ€.
νμ§λ§, μΈλΆμμλ κ·Έλ₯ Int κ°μ΄λ―λ‘ μ΄ μμ λͺ ννμ§ μλ€.
ν΄μ νμ μ μ νμ κ±Έμ΄λ³Ό μ μμ κ²μ΄λ€.
inline class Minutes(val minutes: Int) {
fun toMillis(): Millis = Millis(minutes * 60 * 1000)
}
inline class Millis(val milliseconds: Int) {
// ...
}
interface User {
fun decideAboutTime() : Minutes
fun wakeUp()
}
interface Timer {
fun callAfter(timeMillis: Millis, callback: () -> Unit)
}
fun setUpWakeUpUser(user: User, timer: Timer) {
val time = user.decideAboutTime()
timer.callAfter(time.toMillis()) {
user.wakeUp()
}
}
μΈλΌμΈ ν΄λμ€λ‘ λ§€ννμ¬
λͺ ννκ² μκ°μ λν νμ μ μ§μ ν μ μκ² λμλ€.
λ¬Όλ‘ λ΄λΆμ μΌλ‘ int κ°μ μ¬μ©νκ² μ§λ§!
μΈλΌμΈ ν΄λμ€μ μΈν°νμ΄μ€
μΈλΌμΈ ν΄λμ€λ μΈν°νμ΄μ€λ₯Ό ꡬνν μ μλ€.
νμ§λ§, μ΄λ¬ν ꡬμ±μ μΈλΌμΈμΌλ‘ λμνμ§ μλλ€.
νμ μ μ΄μ μ νμ©ν΄ μΆμνλ₯Ό μ§ννμ§λ§, κ²°κ³Όμ μΌλ‘ μΈλΌμΈμ μ₯μ μ νμ©νμ§ λͺ»νκΈ° λλ¬Έμ μ¬μ©νλ κ²μ 무μλ―Ένλ€.
μ 리
μΈλΌμΈ ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ±λ₯μ μ€λ²ν€λ μμ΄ νμ μ λνν μ μκ² λμλ€.
νμ μ μ κ·Ή νμ©νμ¬ μ½λμ μμ μ±μ λμ΄λ©°,
λͺ νν νμ λ§μ κ°μ ν μ μκΈ°μ, μμΌλ‘ μ κ·Ή μ΄μ©ν κ² κ°λ€!