Tag: 循环

打破kotlin中的匿名函数

创建一个测试用例来表示我正在尝试做什么。 我无法弄清楚如何“停止”继续在匿名函数中工作。 在下面的例子中,如果答案是正确的,我想跳出“苹果”部分。 下面的代码不能编译,因为它说的是返回@苹果而不是返回@香蕉这是唯一有效的选项,但我写下来试图解释我想要达到的目标,并更好地理解如何去做类似这个。 class FunctionBreakingTest { @Test fun stopInMiddleOfLambda() { var answer = "wrong" doStuff apple@ { doStuff banana@ { answer = "correct" if (answer == "correct") { return@apple } answer = "wrong" } answer = "wrong" } assertEquals("correct", answer) } private fun doStuff(foo: () -> Unit) = foo.invoke() }

如何在Kotlin字符串模板中嵌入循环

我们可以像在Kotlin字符串模板中一样简单地嵌套表达式运算符: "List ${if (list.isEmpty()) "is empty" else "has ${list.size} items"}." 但是for或不是表达式,不能像这样嵌套在模板中: "<ol>${for (item in list) "<li>$item"}</ol>" 所以我正在寻找方便的方式来使用大模板内的循环。

在Kotlin中的功能循环中,如何做“休息”或“继续”?

在Kotlin中,我不能在函数循环和lambda中continue break或continue ,就像我可以从一个普通的for循环一样。 例如,这不起作用: (1..5).forEach { continue@forEach // not allowed, nor break@forEach } 有一些旧的文档提到这个可用,但它似乎从来没有实现。 当我想要在lambda内continue或break时,获得相同行为的最佳方法是什么? 注意: 这个问题是由作者故意写的和回答的( 自我回答的问题 ),所以对于常见的Kotlin话题的习惯性的回答是在SO中。 此外,为了澄清一些真正的古老的答案写为科特林的阿尔法,是不是今天的Kotlin准确。

在Kotlin的`forEach`中`break`和`continue`

Kotlin有非常好的迭代函数,比如forEach或者repeat ,但是我不能让break和continue它们(local和non-local): repeat(5) { break } (1..5).forEach { continue@forEach } 目标是尽可能接近地使用函数式语法来模仿通常的循环。 这在Kotlin的一些老版本中是绝对有可能的,但我很难重现这个语法。 问题可能是一个标签(M12)的错误,但我认为第一个例子应该工作。 在我看来,我已经读了一些关于特殊技巧/注释的地方,但我找不到任何关于这个主题的参考。 可能看起来像下面这样: public inline fun repeat(times: Int, @loop body: (Int) -> Unit) { for (index in 0..times – 1) { body(index) } }

在Kotlin中使用`for`循环的因子

有了java编程的经验,我开始学习Kotlin。 我正在玩的语言,发现我坚持找到一个阶乘使用循环kotlin。 我设法使用while循环来做到这一点。 import java.util.Scanner fun main(args: Array<String>){ val reader=Scanner(System.`in`) val x: Int = reader.nextInt() println(factorial(x)) } fun factorial(a: Int): Int{ var ans=1 var i: Int = a while(i>1){ ans*=i i– } return ans } 请帮我做一个for循环。 谢谢

Kotlin:格式字符串

我有一个回收视图,我想迭代并在每个输入字符串前添加一个项目符号点。 我有以下几点: value.strings.xml <string name="skill">• %1$s</string> ProfileListAdapter: fun bindSkills(skill: String) { itemView.recycleSkillItem.text = String.format(Locale(R.string.skill.toString()), ${R.string.skill}, skill) } 这一次打印相同的整数没有项目符号点。 在kotlin中格式化字符串的最佳做法是什么?