Collections 显示给定数字在一个范围内的倍数
如何以更好的方式修复以下代码,以替代迭代从第一个元素到最后一个元素的范围?我的目标是以最高效和最简单的方式编写kotlin代码 我正在寻找有人告诉我,而不是n/7我应该写什么来获得相同的代码结果Collections 显示给定数字在一个范围内的倍数,collections,foreach,kotlin,range,Collections,Foreach,Kotlin,Range,如何以更好的方式修复以下代码,以替代迭代从第一个元素到最后一个元素的范围?我的目标是以最高效和最简单的方式编写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
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") };
这可能是你正在寻找的
val numList = 1..20
numList.forEach{
println("${it} * 7 = ${it*7}")
}
这可能是你正在寻找的
val numList = 1..20
numList.forEach{
println("${it} * 7 = ${it*7}")
}
对于此代码,您有一个输入错误:
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") }
您不能在forEach中使用它,因为您将变量命名为n
或者,同样的事情也可以用它来完成:
对于此代码,您有一个输入错误:
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") }
您不能在forEach中使用它,因为您将变量命名为n
或者,同样的事情也可以用它来完成:
您可以在一行中完成:
(1..20).map { it * 7 }.forEach { println("${it/7} * 7 = $it") }
或与just 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") }
使用扩展功能:
(1..20).forEach { println("$it * 7 = ${it*7}") }
您可以在一行中完成:
(1..20).map { it * 7 }.forEach { println("${it/7} * 7 = $it") }
或与just 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") }
使用扩展功能:
(1..20).forEach { println("$it * 7 = ${it*7}") }
在玩了代码之后,这是另一种方式,但Sergey的答案是最干净的,谢谢
val numList = 1..20
val numMul7= numList.map { it}
numMul7.forEach { n -> println("${n} * 7 = ${7*n}") };
在玩了代码之后,这是另一种方式,但Sergey的答案是最干净的,谢谢
val numList = 1..20
val numMul7= numList.map { it}
numMul7.forEach { n -> println("${n} * 7 = ${7*n}") };
您可以临时跟踪原始值和计算值,然后将其打印并映射到计算值:
val numMul7 = (1..20).map { it to it * 7 }.map { (orig, calc) ->
calc.also { println("$orig * 7 = $calc") }
}
范围功能还用于记录结果的副作用,对计算没有任何作用。您可以暂时跟踪原始值和计算值,然后打印并映射到计算值:
val numMul7 = (1..20).map { it to it * 7 }.map { (orig, calc) ->
calc.also { println("$orig * 7 = $calc") }
}
scope函数还用于记录结果的副作用,对calc没有任何作用。感谢您的回答您的代码比我轻得多,我将接受您的回答作为此线程的响应,但这只是最后一个问题,我只是好奇,为了学习目的,如果我必须使用map,我如何迭代?你能编辑你的帖子并告诉我如果我必须使用地图,答案会是什么,谢谢。我编辑我的问题来澄清我的意思,请参见编辑2,Thanks@Jack在编辑2中,您错误地使用了名称“it”。参考更多信息我参考了你的链接,但找不到答案,请让我知道如何更正编辑2,谢谢你的回答你的代码比我轻得多,我会接受你的回答作为这个线程的回应,但只是最后一个问题,我只是好奇,出于学习目的,如果我必须使用map,我如何迭代?你能编辑你的帖子并告诉我如果我必须使用地图,答案会是什么,谢谢。我编辑我的问题来澄清我的意思,请参见编辑2,Thanks@Jack在编辑2中,您错误地使用了名称“it”。参考更多信息我参考了你的链接,但找不到答案,请让我知道如何更正编辑2,感谢教授,不按期望工作你的答案在输出中产生与我的目标不同的结果:7*7=7------14*7=14---21*7=21…..Facepalm。我没有运行代码。如果不撤消乘法运算,您将无法使用numMul7.forEach。您应该使用numList.forEach,或者使用numList和numMul7。很抱歉,如果您的答案不符合要求,则会在输出中产生与我的目标不同的结果:7*7=7------14*7=14---21*7=21…..Facepalm。我没有运行代码。如果不撤消乘法运算,您将无法使用numMul7.forEach。您应该使用numList.forEach,或者使用numList和numMul7。您使用的是什么版本?我看不出它为什么不起作用。fwiw,我使用的是1.3,但我很确定它将以>=1.1运行。您使用的是什么版本?我看不出它为什么不起作用。fwiw,我使用的是1.3,但我非常确定它将以>=1.1的响应运行!反应很好!