¿Necesito saber por qué? y si cambio esta línea a "println (nombre + dos)" ¿se ha resuelto el error?

fun main(args:Array<String>){ val two=2 val name:String? name="Mensh" println(two+name) } 

Esta es una aplicación simple de kotlin y obtuve el error en println(two+name) :

 Error:(8, 16) Kotlin: None of the following functions can be called with the arguments supplied: public final operator fun plus(other: Byte): Int defined in kotlin.Int public final operator fun plus(other: Double): Double defined in kotlin.Int public final operator fun plus(other: Float): Float defined in kotlin.Int public final operator fun plus(other: Int): Int defined in kotlin.Int public final operator fun plus(other: Long): Long defined in kotlin.Int public final operator fun plus(other: Short): Int defined in kotlin.Int 

La razón por la que esto no se comstack en Kotlin es porque no hay una conversión implícita de un número a cadena cuando concatena, a diferencia de Java.

Por ejemplo, esto comstackría:

 fun main(args:Array<String>) { val two = 2 val name = "Mensh" println(two.toString() + name) } 

Como otros han mencionado, las templates de strings serían una forma más idiomática de hacer esto.

Las otras respuestas te dan la solución, pero no explican tu error.

 Error:(8, 16) Kotlin: None of the following functions can be called with the arguments supplied: public final operator fun plus(other: Byte): Int defined in kotlin.Int public final operator fun plus(other: Double): Double defined in kotlin.Int public final operator fun plus(other: Float): Float defined in kotlin.Int public final operator fun plus(other: Int): Int defined in kotlin.Int public final operator fun plus(other: Long): Long defined in kotlin.Int public final operator fun plus(other: Short): Int defined in kotlin.Int 

Kotlin tiene una sobrecarga del operador para el operador + .

println(two+name) : Aquí el comstackdor intenta usar la function sobrecargada del operador más de Int que tiene un parámetro de String , pero no hay tal function. Por lo tanto, obtienes el error anterior. Puede ver toda la function sobrecargada del operador más en el error anterior.

println(name+two) : ¿Pero String tiene una function de operador sobrecargado que acepta Any? parámetro. Entonces no estás recibiendo ningún error. Esta es la function más sobrecargada del operador de String:

 public operator fun plus(other: Any?): String 

Kotlin tiene su propio estilo de cadenas de formatting, intente:

 println("$two$name") 

En Kotlin, puede concatenar usando templates de cadena :

 val c = "$two $name" print(c) 

Otra información aquí.