【发布时间】:2020-09-11 03:02:20
【问题描述】:
toPascalCase 函数旨在将包含空格或- 的字符串转换为 Pascal 大小写。
下面是我的代码->
fun toPascalCase(str: String): String {
lateinit var ans: String
for(i in str) {
if(i != ' ' && i != '-') {
ans += i
}
}
return ans
}
fun main() {
toPascalCase("Harsh kumar-singh")
}
我在ans 变量之前使用了lateinit 关键字。在 for 循环中,我已经初始化了 ans 变量,但编译器仍然抛出以下错误 ->
Exception in thread "main" kotlin.UninitializedPropertyAccessException: lateinit property ans has not
been initialized
at FileKt.toPascalCase (File.kt:10)
at FileKt.main (File.kt:18)
at FileKt.main (File.kt:-1)
请帮我写代码。谢谢
【问题讨论】:
-
“在 for 循环中我已经初始化了 ans 变量”。不,你没有。
ans += i等价于ans = ans + i,它读取 before 设置它的值。lateinitvar 最初将持有null- 您不能将其添加到任何内容中,因此会出现错误。 (lateinit对局部变量没有意义;它仅适用于在对象之后才能初始化的属性,这是一种相对罕见的情况。即使这样,您仍然需要在使用它之前设置一个值。 )