无法在Kotlin中打印多个布尔值
我开始用kotlin语言
fun main (args:Array){ var flag1:Boolean= true //Explicit declaration var flag2: =false //Implicit declaration println(flag2 + "and " + flag1) println(flag1) println(flag2)
}
在上面的代码中,我声明了布尔型显式和隐式声明的2种types
对于上面的代码,我会说预计下面的输出:
false and true true false
但我越来越跟随erroe:
任何人都可以解释我去哪里错了?
对于那个编译器错误,改变这个:
println(flag2 + "and " + flag1)
对此:
println("$flag2 and $flag1")
Kotlin是强types语言,不能在String和Booleantypes上使用加号运算符。
但是你可以使用字符串插值,在字符串文字中使用$操作符。
你也可以使用布尔types的重载加运算符进行编译,方法如下:
operator fun Boolean.plus(s: String): String { return this.toString() + s }
在Java中,当您将字符串与任何types的对象连接时,它会执行字符串转换 。 例如,
System.out.println(true + " and false"); //Output: true and false
在Kotlin中,字符串转换不存在。 或者,您可以使用字符串模板 。
println("$flag2 and $flag1")
另外,由于Kotlin的String类提供了接受任何types参数的plus(Any?)
函数,所以下面的代码行仍然有效:
println("$flag2 and " + flag1)
这是关于这个设计的讨论 。