Первая буква имени переменной меняется с прописных на строчные - PullRequest
0 голосов
/ 28 марта 2019

Я создал приложение iOS, которое сохраняет данные в базе данных Firebase в реальном времени, например:

users
- ID
-- Email: "test@domain.com"
-- UsersName: "test"
-- Level: 1
-- XP: 0

Теперь я начал с разработки под Android с использованием Kotlin, и данные сохраняются с первой буквой значенийимя в нижнем регистре, например:

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 Ответ

0 голосов
/ 29 марта 2019

Kotlin работает на JVM (виртуальная машина Java), поэтому, чтобы иметь возможность запускать файл .kt, в первую очередь он должен быть скомпилирован в файл Java.Таким образом, при использовании класса, который выглядит следующим образом:

data class User(var UsersName: String = "",
            var XP: Int = 0,
            var Level: Int = 1,
            var Email: String = "")

Соответствующий файл Java создается и в соответствии с Соглашениями об именах Java регистрирующиеся переменные:

Этоэто должна быть строчная буква, такая как java, lang.

Это означает, что не имеет значения, если вы выбираете имя поля, которое начинается с заглавной или строчной буквы, всеполя конвертируются в нижний регистр.Вот почему свойства в вашей базе данных присутствуют так.Это соглашение доступно не только в Java / Kotlin, но и в других языках программирования, поэтому я рекомендую использовать эту рекомендацию в своих проектах.

Что касается Kotlin, помните, что в конце все преобразуется в байт-кодтак что он может работать на JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...