Comment puis-je corriger le code suivant de manière plus efficace (moyen alternatif d'itérer la plage du premier élément au dernier élément? Mon objectif est d'écrire du code kotlin de la manière la plus efficace et la plus simple.
Je cherche quelqu'un me dire au lieu de n / 7 que dois-je écrire pour obtenir le même résultat de code
val numList = 1..20 val numMul7= numList.map { it *7 } numMul7.forEach { n -> println("${it} * 7 = $n") };
voici la sortie:
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 .... 12 * 7 = 84 13 * 7 = 91 14 * 7 = 98 15 * 7 = 105 16 * 7 = 112 17 * 7 = 119 18 * 7 = 126 19 * 7 = 133 20 * 7 = 140
Modifier 2: @Saurabh Patel ou tout autre expert Pouvez-vous me dire pourquoi le code suivant ne fonctionne pas?
val numList = 1..20 val numMul7= numList.map { it *7 } // here what else instead of n/7 can i use to get same result and it iterate the range from the first element to the last one numMul7.forEach { n -> println("${n/7} * 7 = $n") };
5 Réponses :
Cela peut être ce que vous recherchez
val numList = 1..20 numList.forEach{ println("${it} * 7 = ${it*7}") }
merci pour la réponse votre code est beaucoup plus léger que moi, j'accepterai votre réponse comme réponse à ce fil mais juste dernière question, je suis juste curieux, à des fins d'apprentissage si je dois utiliser la carte, comment puis-je itérer? pouvez-vous modifier votre message et me montrer si je dois utiliser la carte, comment la réponse serait, merci
je modifie ma question pour clarifier ma signification, veuillez voir modifier 2, merci
@Jack Dans votre édition 2, vous avez mal utilisé le nom 'it'. Reportez-vous à ceci pour Plus d'informations
J'ai fait référence à votre lien, mais je ne trouve pas la réponse, s'il vous plaît laissez-moi savoir comment puis-je corriger le edit2, merci
Pour ce code, vous avez une faute de frappe:
val numList = 1..20 val numMul7= numList.map { it * 7 } numMul7.forEach { println("$it * 7 = $it") }
Devrait être:
val numList = 1..20 val numMul7= numList.map { it * 7 } numMul7.forEach { n -> println("${n} * 7 = $n") }
Vous ne pouvez pas utiliser it code> dans le
forEach
, car vous avez nommé la variable n
.
Ou, la même chose peut être faite en utilisant it code >:
val numList = 1..20 val numMul7= numList.map { it * 7 } numMul7.forEach { n -> println("${it} * 7 = $n") }
Désolé, ne fonctionne pas comme vous le souhaitez, votre réponse produit ceci en sortie qui est différente de mon objectif: 7 * 7 = 7 --------- 14 * 7 = 14 ------ 21 * 7 = 21. ....
Facepalm. Je n'ai pas exécuté le code. Vous ne pourrez pas utiliser numMul7.forEach
sans annuler votre multiplication. Vous devez utiliser numList.forEach
à la place ou numList
et numMul7
.
Vous pouvez le faire en une seule ligne:
fun IntRange.getMultipliersBy(multiplier: Int): List<Int> { return map { it * multiplier } } //call it like this (1..20).getMultipliersBy(7).forEach { println("${it/7} * 7 = $it") } (1..40).getMultipliersBy(10).forEach { println("${it/10} * 10 = $it") }
Ou la même chose avec juste la fonction forEach
:
fun getMultipliersBy(range: IntRange, multiplier: Int): List<Int> { return range.map { it * multiplier } } // we can call it like this getMultipliersBy(1..20, 7).forEach { println("${it/7} * 7 = $it") } getMultipliersBy(1..40, 10).forEach { println("${it/10} * 10 = $it") }
Si vous avez besoin de sauvegarder le résultat dans une variable:
val listOfMultipliers = (1..20).map { it * 7 }
Si nous utilisons une manière plus abstraite:
(1..20).forEach { println("$it * 7 = ${it*7}") }
Utilisation fonction d'extension :
(1..20).map { it * 7 }.forEach { println("${it/7} * 7 = $it") }
Excellente réponse!
après avoir joué avec le code, c'est une autre façon, mais la réponse de Sergey est la plus claire, merci
val numList = 1..20 val numMul7= numList.map { it} numMul7.forEach { n -> println("${n} * 7 = ${7*n}") };
Vous pouvez temporairement garder une trace de la valeur d'origine et calculée pour ensuite l'imprimer et la mapper à la valeur calculée:
val numMul7 = (1..20).map { it to it * 7 }.map { (orig, calc) -> calc.also { println("$orig * 7 = $calc") } }
la fonction de portée également
est utilisée pour l'effet secondaire de la journalisation des résultats et ne fait rien pour calc
.
Quelle version utilisez-vous? Je ne vois pas pourquoi cela ne devrait pas fonctionner. fwiw, je suis sur 1.3 mais à peu près sûr qu'il fonctionnerait avec> = 1.1