Me gustaría usar en Kotlin un constructor opcional que crea un objeto o devuelve un valor nulo.
Aquí hay un ejemplo de Swift para mostrar cómo me gustaría que funcione:
class Beer { init?(yourAge : Int){ if yourAge < 21 { return nil } } } Beer(yourAge: 17) //is nil Beer(yourAge: 23) //a Beer objectPor supuesto, podría poner el cheque en otra función (abajo hay un equivalente de Kotlin del ejemplo anterior), pero no es tan bueno
class Beer(){ fun initialize(yourAge : Int): Beer? { if (yourAge < 21){ return null }else { return Beer() } } }Kotlin no admite constructores opcionales como ya dijo Yole, pero puede lograr exactamente lo que desea con un operador de invocación definido dentro de un objeto complementario:
class Beer { companion object { operator fun invoke(yourAge: Int) = if (yourAge < 21) { null } else { Beer() } } } Beer(17) // null Beer(23) // instance of Beer