Marko Novakovic
03/31/2021, 7:24 AMfun interface Validation : (String) -> Boolean {
companion object
}
val Validation.Companion.validateEmail
get() = Validation { it.isNotEmpty() }
val Validation.Companion.validatePassword
get() = Validation { it.isNotEmpty() }
val isFormValid = Validation.validateEmail("email") && Validation.validatePassword("password")
and
typealias Validation = (String) -> Boolean
val validateEmail: Validation = { email: String -> email.isNotEmpty() }
val validatePassword: Validation = { password: String -> password.isNotEmpty() }
val isFormValid = validateEmail("email") && validatePassword("password")
What are use-cases where first one would add value over second one? Or is this just semantic difference?Marko Novakovic
03/31/2021, 7:28 AMtypealias
shown above like the “concrete” type, type is type and functions are types tooTomasz Krakowiak
03/31/2021, 7:38 AMMarko Novakovic
03/31/2021, 7:41 AMtypealias Validation = (String) -> Boolean
val validateEmail: Validation = { email: String -> email.isNotEmpty() }
val validatePassword: Validation = { password: String -> password.isNotEmpty() }
val isFormValid = validateEmail("email") && validatePassword("password")
val <http://Validation.int|Validation.int>: Int
get() = 1
fun Validation.test(): Unit = println("Test")
fun main() {
validateEmail.test()
val int = <http://validateEmail.int|validateEmail.int>
println(int)
}
Marko Novakovic
03/31/2021, 7:44 AMTomasz Krakowiak
03/31/2021, 7:47 AMTomasz Krakowiak
03/31/2021, 7:48 AMtypealias Validation = (String) -> Boolean
typealias SomethingUrelated = (String) -> Boolean
fun Validation.test(): Unit {
println("Test")
}
fun main() {
val somethingUrelated : SomethingUrelated = TODO()
somethingUrelated.test()
}
And this one does compile.Tomasz Krakowiak
03/31/2021, 7:50 AMtypealias Validation = (String) -> Boolean
typealias SomethingUrelated = (String) -> Boolean
fun Validation.Companion.test(): Unit { // Unresolved reference: Companion
println("Test")
}
Tomasz Krakowiak
03/31/2021, 7:52 AMMarko Novakovic
03/31/2021, 7:53 AM