Est-il possible d'utiliser la valeur par défaut sans paramètre facultatif lorsque la valeur null est passé?

Par exemple, si j'ai les données suivantes de la classe:

data class Data(
    val name: String = "",
    val number: Long = 0
)

Et les fonctions qui peuvent retourner null:

fun newName(): String? {}

fun newNumber(): Long? {}

Je sais que je peux utiliser ce qui suit pour utiliser la valeur des fonctions si elles ne sont pas null:

val newName = newName()
val newNumber = newNumber()

val data = Data(
        if (newName != null) newName else "",
        if (newNumber != null) newNumber else 0
)

Mais est-il un moyen d'utiliser la valeur par défaut spécifié dans le constructeur de la Data classe lorsque les valeurs sont null?

Je n'ai rien trouvé dans la documentation, mais j'espérais quelque chose de ce genre:

val data = Data(newName()?, newNumber()?)

Mais cela ne veut pas compiler.

  • Au lieu de if (newName != null) newName else "" vous pouvez simplement utiliser newName ?: "". Il s'appelle elvis opérateur.
  • Ah, oui, j'ai oublié à ce sujet! Certainement plus succincte, mais elle n'est pas toujours utiliser le paramètre par défaut défini dans le constructeur de la classe.
InformationsquelleAutor Bryan | 2017-06-23