Collections 显示给定数字在一个范围内的倍数

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

如何以更好的方式修复以下代码,以替代迭代从第一个元素到最后一个元素的范围?我的目标是以最高效和最简单的方式编写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") };

这可能是你正在寻找的

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的响应运行!反应很好!