变量名的第一个字母从大写变为小写

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文件:

应该是小写字母,如javalang

这意味着无论您选择以大写还是小写开头的字段名称,所有字段都将转换为以小写开头。这就是为什么你的数据库中的属性是这样存在的。此约定不仅在 Java/Kotlin 中可用,而且在其他编程语言中也可用,因此我建议您在项目中使用此建议。

关于 Kotlin,请记住,最后,所有内容都转换为字节码,以便可以在 JVM 上运行。

【讨论】:

好的,这意味着我必须更改整个 iOS 应用程序。这几乎是不可能的.. 我的数据库已经有很多用户了.. 我希望在开始使用 iOS 版本之前就更新它.. 还有其他解决方案吗? 变量的命名规则也在official documentation中指定。我不知道你是否可以强迫 Kotlin 不要那样做。我认为您应该为此提出一个单独的问题。关于阅读这类字段,您可以查看我在 post 中的回答。

以上是关于变量名的第一个字母从大写变为小写的主要内容,如果未能解决你的问题,请参考以下文章

JavaBean的命名规则

Objective-c 属性名:使用大写字符作为属性名的第一个字符

现代软件工程第三次作业

java标识符遵循规范

把骆驼命名法的变量,变为大写字母变小写且之前加下划线

[react] 在React中声明组件时组件名的第一个字母必须是大写吗?为什么?