Format de kotlin chaîne de modèles
Kotlin a une excellente fonctionnalité appelée chaîne de modèles. Je l'aime beaucoup.
val i = 10
val s = "i = $i" //evaluates to "i = 10"
Mais est-il possible d'avoir une mise en page dans les modèles? Par exemple, je voudrais format Double en chaîne de modèles dans kotlin, à moins de définir un certain nombre de chiffres après le séparateur décimal:
val pi = 3.14159265358979323
val s = "pi = $pi??" //How to make it "pi = 3.14"?
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il n'y a pas de prise en charge intégrée pour la mise en forme de chaîne de modèles encore, comme une solution de contournement, vous pouvez utiliser quelque chose comme:
la
.format(n)
fonction, vous devez définir vous-même commeIl y a clairement un morceau de fonctionnalité qui manque de Kotlin pour le moment, nous allons le corriger.
Double.toString()
"%.${digits}f".format(pi)
à être plus concis. La chaîne littérale est évalué à une classe String.Comme une solution de contournement, Il y a un Kotlin stdlib fonction qui peut être utilisé dans une façon agréable et entièrement compatible avec Java format de Chaîne de caractères (c'est seulement un wrapper autour de Java
String.format()
)Voir Kotlin de la documentation
Votre code serait:
Kotlin de la classe String possède une format fonction, qui utilise en interne de Java
String.format
méthode:Utilisation
Simple,
Utilisation:
Depuis
String.format
n'est qu'une extension de la fonction (voir ici) qui appelle en internejava.lang.String.format
vous pouvez écrire votre propre fonction d'extension à l'aide de Java DecimalFormat si vous avez besoin de plus de flexibilité:Essayer prendre. Elle retourne une liste contenant les n premiers éléments.
Mais c'est juste sur les collections rekire dit, qui poliment m'a corrigé dans le commentaire ci-dessous.
Vous pouvez convertir en chaîne de caractères, utilisez le prendre et de le transformer à nouveau en Double.
Pas la meilleure idée, mais il fonctionne bien.