像Java等編程語言鏈式領域鏈領域,你喜歡:String a, b, c, d;
科特林如果你想如何聲明與相同的數據類型
是否有可能在科特林太連鎖領域,如val a, b, c, d
? here doesn`t provide any info
像Java等編程語言鏈式領域鏈領域,你喜歡:String a, b, c, d;
科特林如果你想如何聲明與相同的數據類型
是否有可能在科特林太連鎖領域,如val a, b, c, d
? here doesn`t provide any info
不,Kotlin
不支持聲明多個變量的聲明。
Kotlin
已經從Java學到了一些好的教訓。其中之一就是變量聲明。儘管Java支持多行變量聲明,但Oracle的Java指南指出,每行僅使用一個聲明。
下面是甲骨文Java標準提到:建議
每行
一個聲明,因爲它鼓勵評論。換句話說,
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, e.g.:
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
剛剛刪除作爲一個選項。
首先,科特林是null-safety語言,這意味着你不能沒有初始化它們聲明領域,科特林有哪怕是可空任何類型的任何默認值,但有一個例外的原始數組,例如: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
其次,如果你關心的字段/變量的定義,它們是完全不同的。該字段/變量類型在右側,這意味着你不能在科特林聲明統一場/變量的所有聲明,所以它沒有意義在科特林,例如:
//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;
最後,字段是在Kotlin中的重組件。當你在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
// e.g: this::c.getter & this::c.setter
Did you quote this?如果可以,你能提供鏈接嗎?會很有趣。 – guenhter
@guenhter我已經更新了答案。 – chandil03