第5行和第6行出错。
Kotlin:类型不匹配:推断类型是String但String.Companion 预计
class Robot (name: String,color :String) {
var roboName= String
var roboColor= String
init {
this.roboName=name
this.roboColor=color
}
fun makeBed()
{
println("I will make your bed.")
}
}
fun main(args: Array<String>){
var robot1=Robot("Robot1","Black")
println(robot1.roboName)
println(robot1.roboColor)
robot1.makeBed()
}
答案 0 :(得分:4)
您已将 String
分配给变量,该变量引用String.Companion
对象。这也是属性的类型String.Companion
。您想要做的是定义您的财产类型:
var roboName: String
此外,您可以更进一步,加入声明与作业:
var roboName: String = name
var roboColor: String = color
答案 1 :(得分:0)
您的语法不正确。试试这个(使用数据类来简化它并修复类型声明的语法 - 使用:
进行类型声明,而不是=
):
data class Robot(val name: String, val color: String) {
fun makeBed() {
println("I will make your bed.")
}
}
fun main(args: Array<String>) {
val robot1 = Robot("Robot1", "Black")
println(robot1.name)
println(robot1.color)
robot1.makeBed()
}
答案 2 :(得分:0)
您必须添加如下变量:
var roboName: String
var roboColor: String
答案 3 :(得分:0)
一个非常不同的场景让我想到了这个问题,我将分享我的场景,因为它可能会帮助其他人。对我来说,错误是
类型不匹配:推断的类型为String?但应该是String
在我的情况下,我声明了一个String类型的var,实际上方法的返回类型是可为空的字符串,即
var variable:String
必须为 var variable:String?
。
答案 4 :(得分:0)
您可以在声明的开头使用lateinit
关键字。
class Robot (name: String,color :String) {
lateinit var roboName = String
lateinit var roboColor = String
init {
this.roboName=name
this.roboColor=color
}
fun makeBed() {
println("I will make your bed.")
}
}
fun main(args: Array<String>) {
var robot1 = Robot("Robot1","Black")
println(robot1.roboName)
println(robot1.roboColor)
robot1.makeBed()
}