如何在静态编程语言中实现等效于遵循Java开关
语句代码?
switch (5) {
case 1:
// Do code
break;
case 2:
// Do code
break;
case 3:
// Do code
break;
}
Kotlin的开关外壳非常灵活
when(x){
2 -> println("This is 2")
3,4,5,6,7,8 -> println("When x is any number from 3,4,5,6,7,8")
in 9..15 -> println("When x is something from 9 to 15")
//if you want to perform some action
in 20..25 -> {
val action = "Perform some action"
println(action)
}
else -> println("When x does not belong to any of the above case")
}
Java中的开关
在Kotlin中有效地使用。但是,语法是不同的。
when(field){
condition -> println("Single call");
conditionalCall(field) -> {
print("Blocks");
println(" take multiple lines");
}
else -> {
println("default");
}
}
这里有一个不同用途的例子:
// This is used in the example; this could obviously be any enum.
enum class SomeEnum{
A, B, C
}
fun something(x: String, y: Int, z: SomeEnum) : Int{
when(x){
"something" -> {
println("You get the idea")
}
else -> {
println("`else` in Kotlin`when` blocks are `default` in Java `switch` blocks")
}
}
when(y){
1 -> println("This works with pretty much anything too")
2 -> println("When blocks don't technically need the variable either.")
}
when {
x.equals("something", true) -> println("These can also be used as shorter if-statements")
x.equals("else", true) -> println("These call `equals` by default")
}
println("And, like with other blocks, you can add `return` in front to make it return values when conditions are met. ")
return when(z){
SomeEnum.A -> 0
SomeEnum.B -> 1
SomeEnum.C -> 2
}
}
其中大多数编译为
时的开关
,除了{...},它编译为一系列if语句。
但对于大多数用途,如果您在(字段)
时使用,它将编译为
开关(字段)
。
然而,我想指出的是,带有大量分支的
开关(5)
只是浪费时间。5永远是5。如果使用开关
、If语句或任何其他逻辑运算符,则应使用变量。我不确定这段代码是一个随机的例子,还是实际的代码。我要指出这一点,以防是后者。
你可以这样做:
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}
摘自官方帮助
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
我试图将@Age constraint的实现从java复制到Kotlin,我复制了Java代码库,并使用IDE将其转换为Kotlin代码。 Java代码 Intellij生成的对应静态编程语言代码 Kotlin代码导致错误声明“注释类中不允许成员”。将注释类List从Age中移出是否可以解决此问题?还有其他方法可以在另一个类中实现注释类吗? 非常感谢。
所以我希望我的应用程序在一定的时间间隔内执行操作。在做了一点研究后,我在stackoverflow上找到了一些答案,它使我找到了这个链接,该链接称为固定RateTimer:这是该页面中的第一个示例 当我添加这段代码时,我得到了一个错误。 “表达式'fixedRateTimer'不能作为函数调用。找不到函数'invoke()'变量'fixedRateTimer'必须初始化” 我做了更多的研究并引进了
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。
抱歉,我在谷歌搜索中找不到答案...在kotlin中运行bash命令的语法是什么?我想做一个curl命令。那里的留档似乎非常有限,或者我不擅长谷歌搜索?
是否可以在中的class中添加一个新的静态方法?通常,由于Kotlin Extensions,这样的事情在Kotlin中是可能的。 我已经尝试在一个名为的文件中执行以下操作: 但<code>数学。无法解析同伴。。。