无法在Kotlin中打印多个布尔值

时间:2017-12-25 14:21:52

标签: variables types kotlin

我从kotlin语言开始

fun main (args:Array<String>){


    var flag1:Boolean= true //Explicit declaration
    var flag2: =false //Implicit declaration

     println(flag2 + "and " + flag1)

     println(flag1)
     println(flag2)

}

在上面的代码中我声明了2种类型的布尔显式隐式声明

对于上面的代码我会说预计会有以下输出: -

false and true 

true

false

但我正在追随erroe: - error given by IDE

任何人都可以解释我哪里出错了吗?

2 个答案:

答案 0 :(得分:4)

对于该编译器错误,请更改此:

println(flag2 + "and " + flag1)

到此:

println("$flag2 and $flag1")

Kotlin是强类型语言,你不能在String和Boolean类型上使用加号运算符。

但你可以使用字符串插值,在字符串文字中使用$运算符。

您还可以通过添加以下内容使其在布尔类型上使用重载加运算符进行编译:

operator fun Boolean.plus(s: String): String {
    return this.toString() + s
}

答案 1 :(得分:3)

在Java中,当您将字符串与任何类型的对象连接时,它会执行string conversion。例如,

System.out.println(true + " and false");    //Output: true and false

在Kotlin中,字符串转换并不存在。或者,您可以使用string templates

println("$flag2 and $flag1")

此外,由于Kotlin的String类提供了plus(Any?)函数,它接收任何类型作为参数,因此以下代码行仍然有效:

println("$flag2 and " + flag1)

此设计中有discussion