右表达式的语法是否取决于左值的类型?

问题描述 投票:0回答:1

根据Kotlin Koans的教程,我已经完成了有关Nullable Types的任务。

此代码被编译器接受为正确的代码:

fun sendMessageToClient(
        client: Client?, message: String?, mailer: Mailer
) {
    val email = client?.personalInfo?.email;
    if(email != null && message!=null)
    mailer.sendMessage(email, message);
}

class Client(val personalInfo: PersonalInfo?)
class PersonalInfo(val email: String?)
interface Mailer {
    fun sendMessage(email: String, message: String)
}

如果我仅将一个单词val更改为String

fun sendMessageToClient(
        client: Client?, message: String?, mailer: Mailer
) {
      // here is the change
    String email = client?.personalInfo?.email;
    if(email != null && message!=null)
    mailer.sendMessage(email, message);
}

class Client(val personalInfo: PersonalInfo?)
class PersonalInfo(val email: String?)
interface Mailer {
    fun sendMessage(email: String, message: String)
}

注释下的行被编译器标记为在=?.;处都存在4个相同的错误“ Expecting a element”。

如果我在Client和PersonalInfo类描述中都删除了val,则没有任何变化。

这些错误是什么意思?

kotlin intellij-idea syntax
1个回答
0
投票

String email = client?.personalInfo?.email不是有效的Kotlin语法。这是Java语法。

如果要指定类型,请在变量名之后进行:

val email: String = client?.personalInfo?.email

错误只是告诉您编译器甚至无法解析代码。

© www.soinside.com 2019 - 2024. All rights reserved.