На других языках программирования, таких как Java, если вы хотите связать поля, вам нужно: String a, b, c, d;
Возможно ли связать поля в Котлине, например, val a, b, c, d
? здесь не предоставляет никакой информации
Нет, Kotlin
не поддерживает объявление нескольких переменных в инструкции.
Kotlin
выучил неплохие уроки из Java. Одно из них – объявление переменной. Хотя Java поддерживает объявление нескольких переменных в строке, Oracle Java Guidelines говорит, что для каждой строки используется только одно объявление.
В Oracle Java Standard упоминается следующее:
Рекомендуется одно объявление в строке, поскольку оно поощряет комментирование. Другими словами,
int level; // indentation level int size; // size of table
предпочтительнее
int level, size;
В любом случае переменные и функции не должны быть объявлены в одной строке. Пример:
long dbaddr, getDbaddr(); // WRONG!
Не помещайте разные типы в одну строку. Пример:
int foo, fooarray[]; //WRONG!
Примечание. В приведенных выше примерах используется одно пространство между типом и идентификатором. Другая
acceptable alternative is to use tabs, eg: int level; // indentation level int size; // size of table Object currentEntry; // currently selected table entry
См. Эту ссылку для соглашения Oracle: http://www.oracle.com/technetwork/java/codeconventions-150003.pdf . Страница №. 14> Объявления.
Произошли некоторые огромные дебаты по этой теме type of declaration should be used for Java
. Поэтому Kotlin
просто удалил это как вариант.
Во-первых, Kotlin – это язык с нулевой безопасностью, что означает, что вы не можете объявлять поля без их инициализации, а Kotlin не имеет значения по умолчанию для любых типов, даже если он является нулевым , но существует исключение для примитивного массива, например: IntArray(size)
значение по умолчанию, соответствующее java, равно 0
. Таким образом, вы не можете написать форму объявления поля, как в Java, например:
//Java private String a,b,c;// they are `null` by default. private val a:String? // error: property must be initialized
Во-вторых, если вас беспокоит определение полей / переменных, они совершенно разные. тип поля / переменной объявляется с правой стороны , что означает, что вы вообще не можете объявлять единые поля / переменные в Kotlin, поэтому это не имеет смысла в Kotlin, например:
//Java String a,b; //Kotlin val a, b; // ^---^--- how to declare the variables type? // v-- just more than one `val` after introduce the variable types val a:String; val b:String;
Наконец, поле является тяжелым компонентом в Котлине. когда вы объявляете поле в Java, это просто поле, не более. но в Kotlin, когда вы объявляете поле, это может быть свойство / поле. и свойство имеет поле getter / backing (?) / setter (?), например:
// java String a; //just a field // kotlin var a:String = "a" // has a backing field, getter & setter private var b:String = "b" // it is just a field @JvmField var c:String = "c" // ^--- it is a field but it has getter/setter in reflect // eg: this::c.getter & this::c.setter