6. // Old School Java Style
val ratingView = RatingView()
ratingView.setStars(3)
ratingView.setMaxStars(5)
// Kotlin DSL Style
rating {
initial = 3
maximum = 5
}
@Miqubel
7. // Creating our DSL
fun rating(func:() -> Unit)
// Using our DSL
rating({})
@Miqubel
8. // Creating our DSL
fun rating(func:() -> Unit)
// Using our DSL
rating({
})
@Miqubel
9. // Creating our DSL
fun rating(func:() -> Unit)
// Using our DSL
rating {
}
@Miqubel
10. // Creating our DSL
fun rating(func:() -> Unit)
// Using our DSL
rating {
initial = 3
maximum = 5
}
@Miqubel
11. // Creating our DSL
fun rating(func: RatingDsl.() -> Unit)
// Using our DSL
rating {
initial = 3
maximum = 5
}
@Miqubel
12. // Creating our DSL
fun rating(func: RatingDsl.() -> Unit)
class RatingDsl(var initial: Int = 1,
var maximum: Int = 5)
// Using our DSL
rating {
initial = 3
maximum = 5
}
@Miqubel
13. // Creating our DSL
fun rating(func: RatingDsl.() -> Unit)
= RatingDsl().apply { func() }
class RatingDsl(var initial: Int = 1,
var maximum: Int = 5)
// Using our DSL
rating {
initial = 3
maximum = 5
}
@Miqubel
14. // Creating our DSL
fun rating(func: RatingDsl.() -> Unit)
= RatingDsl()
.apply { func() }
.build()
class RatingDsl(var initial: Int = 1,
var maximum: Int = 5) {
fun build(): RatingView {
return RatingView().apply {
setStars(initial)
setMaxStars(maximum)
}
}
}
// Using our DSL
rating {
initial = 3
maximum = 5
}
@Miqubel
15. Thanks!
If you would be interested in a full length
talk about this, let me know!
@Miqubel