не удалось распечатать несколько булевых в Котлине

я начинаю с языка котлин

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: – ошибка, предоставленная IDE

может ли кто-нибудь объяснить, где я ошибся?

Для этой ошибки компилятора измените это:

 println(flag2 + "and " + flag1) 

к этому:

 println("$flag2 and $flag1") 

Kotlin – это строго типизированный язык, и вы не можете использовать оператор plus для типов String и Boolean.

Но вы можете использовать интерполяцию строк, используя оператор $ внутри строкового литерала.

Вы также можете скомпилировать его с помощью перегруженного оператора плюс в булевом типе, добавив следующее:

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

В Java он выполняет преобразование строк, когда вы объединяете строку с любым типом объекта. Например,

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

В Kotlin преобразование строк не существует. Кроме того, для этого вы можете использовать строковые шаблоны .

 println("$flag2 and $flag1") 

Кроме того, поскольку класс String Kotlin предоставляет функцию plus(Any?) Которая получает любой параметр как параметр, поэтому следующая строка кода остается в силе:

 println("$flag2 and " + flag1) 

Вот обсуждение этого проекта.