如何以更好的方式(替换从第一个元素到最后一个元素的范围)来修复以下代码?我的目标是以最有效,最简单的方式编写kotlin代码
我正在寻找有人告诉我而不是n / 7,我应该写什么才能得到相同的代码结果
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") };
这里有输出:
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
编辑2: @Saurabh Patel或任何其他专家 您能告诉我为什么以下代码不起作用吗?
val numList = 1..20
val numMul7= numList.map { it *7 }
numMul7.forEach { n -> println("${it} * 7 = $n") };
答案 0 :(得分:2)
您可以一行完成:
(1..20).map { it * 7 }.forEach { println("${it/7} * 7 = $it") }
或仅具有forEach
函数:
(1..20).forEach { println("$it * 7 = ${it*7}") }
如果您需要将结果保存到变量中:
val listOfMultipliers = (1..20).map { it * 7 }
如果我们使用更抽象的方式:
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") }
使用扩展功能:
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") }
答案 1 :(得分:1)
这可能就是您要寻找的
val numList = 1..20
numList.forEach{
println("${it} * 7 = ${it*7}")
}
答案 2 :(得分:1)
对于此代码,您有一个错字:
val numList = 1..20
val numMul7= numList.map { it * 7 }
numMul7.forEach { n -> println("${it} * 7 = $n") }
应该是:
val numList = 1..20
val numMul7= numList.map { it * 7 }
numMul7.forEach { n -> println("${n} * 7 = $n") }
您不能在it
中使用forEach
,因为您将变量命名为n
。
或者,可以使用it
完成同一件事:
val numList = 1..20
val numMul7= numList.map { it * 7 }
numMul7.forEach { println("$it * 7 = $it") }
答案 3 :(得分:0)
玩完代码后,这是另一种方式,但是谢尔盖的回答是最干净的一种,谢谢
val numList = 1..20
val numMul7= numList.map { it}
numMul7.forEach { n -> println("${n} * 7 = ${7*n}") };
答案 4 :(得分:0)
您可以暂时跟踪原始值和计算值,然后打印并映射到计算值:
val numMul7 = (1..20).map { it to it * 7 }.map { (orig, calc) ->
calc.also { println("$orig * 7 = $calc") }
}
范围函数also
用于记录结果的副作用,对calc
无任何作用。