π‘ μνΈμ€ λΉλμ λν΄ μμλ³΄κ³ , μ€λ¨μ΄ μ νμνμ§ νμ΅νμμ΅λλ€.
μνμ€ λΉλ
- μ½νλ¦°μ μνμ€λ Listλ Setκ³Ό κ°μ 컬λ μ
μ΄λ λΉμ·ν κ°λ
μ΄μ§λ§, νμν κ°μ νλμ© κ³μ°νλ μ§μ°(lazy) μ²λ¦¬λ₯Ό ν©λλ€.
- μꡬλλ μ°μ°μ μ΅μνμΌλ‘ μν
- 무νμ μ΄ λ κ°λ₯μ± μ‘΄μ¬
- λ©λͺ¨λ¦¬ μ¬μ©μ΄ ν¨μ¨μ
- !μ½νλ¦°μμλ μνΈμ€λ³΄λ€ λ μ’μ κ°λ μΈ flow builderλ₯Ό μ 곡νμ§λ§, μ΄ν΄λ₯Ό μν΄μ μνμ€μ κ°λ μ λ¨Όμ νμ΅νμμ΅λλ€.
μμ°¨μ κ³μ°κ³Ό λ°ν
val seq = sequence {
yield(1)
yield(2)
yield(3)
}
fun main() {
for (num in seq) {
print(num)
}
}
- μ μ½λμ μ¬μ©λ sequence ν¨μλ DSL μ½λμ λλ€.
- μΈμλ‘ μμ κ°μ²΄ μ§μ λλ€ ν¨μ(yield)λ₯Ό λ°κ³ μμ΅λλ€.
- DSL : Domain-Specific Languageλ‘ νΉμ λλ©μΈμ νΉνλ μΈμ΄λ₯Ό μλ―Έν©λλ€.
- λλ©μΈμ νΉμ±μ μ λ°μνμ¬ κ°κ²°νκ³ μ§κ΄μ μΈ μ½λκ° μμ± κ°λ₯ν©λλ€.
- μμ κ°μ²΄ μ§μ λλ€ : Kotlinμ κΈ°λ₯ μ€ νλλ‘ ν¨μ 리ν°λ΄ λ΄λΆμμ μμ κ°μ²΄μ λ©€λ²μ μ§μ μ κ·Όν μ μλλ‘ νλ κ²μ λλ€.
- DSL : Domain-Specific Languageλ‘ νΉμ λλ©μΈμ νΉνλ μΈμ΄λ₯Ό μλ―Έν©λλ€.
fun recyclerView(block: RecyclerView.() -> Unit): RecyclerView {
val recyclerView = RecyclerView(context)
recyclerView.block() // μμ κ°μ²΄ μ§μ λλ€ νΈμΆ
return recyclerView
}
fun main() {
val recyclerView = recyclerView {
layoutManager = LinearLayoutManager(context)
adapter = MyAdapter(myDataSet)
addItemDecoration(DividerItemDecoration(context, LinearLayoutManager.VERTICAL))
}
}
- μ¬κΈ°μ μ€μν μ μ μ«μκ° λ―Έλ¦¬ μμ±λλ λμ , νμν λλ§λ€ μμ±λλ€λ νΉμ§μ΄ μμ΅λλ€.
μνΈμ€ λΉλ λ΄λΆ ꡬ쑰 νμΈ
- μνΈμ€ λΉλ λ΄λΆ, μνΈμ€λ₯Ό μ¬μ©νλ κ³³μμ λ©μμ§λ₯Ό μΆλ ₯νλ©΄ μ΄λ¬ν μλ λ°©μμ μ½κ² νμΈν μ μμ΅λλ€.
val seq = sequence {
println("Generating 1")
yield(1)
println("Generating 2")
yield(2)
println("Generating 3")
yield(3)
println("Generating end")
}
fun main() {
for (num in seq) {
print("next number is $num")
}
}
// Generating 1
// next number is 1
// Generating 2
// next number is 2
// Generating 3
// next number is 3
// Generating end
- μ¬κΈ°μ λ°λ³΅λ¬Έκ³Ό λ€λ₯Έ μ°¨μ΄λ, λ€λ₯Έ μ«μλ₯Ό μ°ΎκΈ° μν΄μ λ©μ·λ λΆλΆμμ λ€μ μ€νλλ€λ κ²μ λλ€.
- μ€λ¨ 체μ κ° μλ€λ©΄ ν¨μκ° μ€κ°μ λ©μ·λ€κ°, λ€μ λμ€μ μ€λ¨λ μ§μ μμ λ€μ μ€ννλ κ²μ λΆκ°λ₯ν©λλ€.
- main ν¨μμ μνΈμ€ μ λλ μ΄ν°κ° λ²κ°μκ°λ©΄μ μ€νλκ³ μμ΅λλ€.
- μ΄λ€ μ§μ μ΄λ μκ΄μμ΄ μνΈμ€ μ λλ μ΄ν°μμ ν¨μλ₯Ό νΈμΆνλ©΄ λΉλ ν¨μμ μ΄μ μ§μ μΌλ‘ λμκ° λ€μ κ°μ μμ±ν©λλ€.
- μ΄λ μ½λ£¨ν΄μ μ€ν μλ₯Ό DSLμ νμ©νμ¬ μ²΄ννκ³ μμΌλ©°, μ€λ λμμλ μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μ ν° λΉμ©μ μλͺ¨ν΄μΌ ν©λλ€.
μνΈμ€ λΉλμ μ€λ¨ ν¨μ
- μ€μν μ μ μνΈμ€ λΉλλ λ°νμ΄ μλ μ€λ¨ ν¨μλ₯Ό μ¬μ©νλ©΄ μλ©λλ€.
- μ€λ¨μ΄ νμνλ€λ©΄ νλ‘μ° λ₯Ό νμ©ν΄μΌ νλ©°, μνΈμ€ λΉλμ λΉμ·νμ§λ§ νλ‘μ°λ μ¬λ¬κ°μ§ μ½λ£¨ν΄ κΈ°λ₯μ μ§μν©λλ€.
- μνΈμ€ λΉλ λ΄λΆμμ μ€λ¨ μ°μ°μ νΈμΆν μ μλ μ΄μ λ SequenceScopeμ Restricts Suspension μ΄λ Έν μ΄μ μ΄ λ΄μ₯λμ΄ μκΈ° λλ¬Έμ λλ€.
- ν΄λΉ μ΄λ Έν μ΄μ μ μ€λ¨ ν¨μλ₯Ό νΈμΆνλ κ²μ νμ©νμ§ μμ΅λλ€.
https://m.yes24.com/Goods/Detail/123034354