变量名的第一个字母从大写变为小写
Posted
技术标签:
【中文标题】变量名的第一个字母从大写变为小写【英文标题】:First letter of variable's name is changing from uppercase to lowercase 【发布时间】:2019-08-19 14:09:33 【问题描述】:我创建了一个ios
应用程序,将数据存储到 Firebase 实时数据库,如下所示:
users
- ID
-- Email: "test@domain.com"
-- UsersName: "test"
-- Level: 1
-- XP: 0
现在我开始使用 Kotlin 进行 android 开发,数据以小写的值名称的第一个字母存储,如下所示:
users
- ID
-- email: "test@domain.com"
-- usersName: "test" (No mistake, the N is uppercased)
-- level: 1
-- xp: 0 (No mistake, the P is lowercase)
这是我的代码:
data class User(var UsersName: String = "",
var XP: Int = 0,
var Level: Int = 1,
var Email: String = "")
private fun saveUserToFirebaseDatabase()
val uid = FirebaseAuth.getInstance().uid ?: ""
val ref = FirebaseDatabase.getInstance().getReference("users/$uid")
val mDatabase = FirebaseDatabase.getInstance().getReference();
val username = usernameSignUp.text.toString()
val user = User(username, 0, 1, SignUpEmailtext.text.toString())
print(user)
mDatabase.child("users").child(uid).setValue(user)
.addOnSuccessListener
.addOnFailureListener
我希望值的名称与它们在类中的命名方式完全相同(就像 iOS 应用程序保存它们一样)。
【问题讨论】:
【参考方案1】:Kotlin 在 JVM(Java 虚拟机)上工作,因此为了能够运行 .kt
文件,首先应该将其编译成 Java 文件。所以当使用一个看起来像这样的类时:
data class User(var UsersName: String = "",
var XP: Int = 0,
var Level: Int = 1,
var Email: String = "")
根据Java Naming Conventions重加变量创建对应的Java文件:
应该是小写字母,如
java
、lang
。
这意味着无论您选择以大写还是小写开头的字段名称,所有字段都将转换为以小写开头。这就是为什么你的数据库中的属性是这样存在的。此约定不仅在 Java/Kotlin 中可用,而且在其他编程语言中也可用,因此我建议您在项目中使用此建议。
关于 Kotlin,请记住,最后,所有内容都转换为字节码,以便可以在 JVM 上运行。
【讨论】:
好的,这意味着我必须更改整个 iOS 应用程序。这几乎是不可能的.. 我的数据库已经有很多用户了.. 我希望在开始使用 iOS 版本之前就更新它.. 还有其他解决方案吗? 变量的命名规则也在official documentation中指定。我不知道你是否可以强迫 Kotlin 不要那样做。我认为您应该为此提出一个单独的问题。关于阅读这类字段,您可以查看我在 post 中的回答。以上是关于变量名的第一个字母从大写变为小写的主要内容,如果未能解决你的问题,请参考以下文章