根据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
,则没有任何变化。
这些错误是什么意思?
String email = client?.personalInfo?.email
不是有效的Kotlin语法。这是Java语法。
如果要指定类型,请在变量名之后进行:
val email: String = client?.personalInfo?.email
错误只是告诉您编译器甚至无法解析代码。