Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 在Kotlin中一次定义多个变量(例如Java:String x,y,z;)_Variables_Kotlin - Fatal编程技术网

Variables 在Kotlin中一次定义多个变量(例如Java:String x,y,z;)

Variables 在Kotlin中一次定义多个变量(例如Java:String x,y,z;),variables,kotlin,Variables,Kotlin,我想知道是否有任何方法可以像Java和世界上几乎所有其他现有语言一样,在Kotlin中同时定义多个变量 就像在Java中一样: String x = "Hello World!", y = null, z; 您可以使用分号(;)在一行中声明(并分配)多个: val编号=42;val message=“你好,世界!”; 您还可以在同一行中声明(和分配)多个,类似地: 类示例{ var number=42;var message=“你好,世界!”; } 一个可运行的示例演示了您可以使用的两种见

我想知道是否有任何方法可以像Java和世界上几乎所有其他现有语言一样,在Kotlin中同时定义多个变量

就像在Java中一样:

String x = "Hello World!", y = null, z;
您可以使用分号(
)在一行中声明(并分配)多个:

val编号=42;val message=“你好,世界!”;
您还可以在同一行中声明(和分配)多个,类似地:

类示例{
var number=42;var message=“你好,世界!”;
}
一个可运行的示例演示了您可以使用的两种见解(它在我的本地环境中使用Kotlin版本1.1.2-5(JRE 1.8.0_144-b01)也可以正常工作):

类示例{
//在一行中声明多个属性
变量编号:Int;变量消息:String;
//修改参数以强调差异的构造函数
构造函数(_编号:Int,_消息:String){
数字=_数字*2
message=\u message.toUpperCase()
}
}
趣味主线(args:Array){
//在一行中声明多个只读变量
val number=42;val message=“你好,世界!”;
//打印那些局部变量
println(“[main].number=“+number”)
println(“[main].message=“+message”)
//实例化对象并打印其属性值
val obj=示例(编号、消息)
println(“[Example].number=“+obj.number”)
println(“[Example].message=“+obj.message”)
}
执行输出:

[main].number=42
[main].message=你好,世界!
[示例].number=84
[示例].message=你好,世界!
另一方面,JetBrains的工程师指出:

“在同一行上声明多个属性是不被允许的。” 很多Java风格的指南,所以我们没有在中实现对它的支持 科特林。”

请注意,他的答案已经有4年多的历史了,因此从那时起可能会有变化。

试试这个:

fun main() {
    val (x, y, z) = listOf(1, true, "Sam")    //can be "arrayOf(), "Pair()" or other types
    println("$x, $y, $z")
}
输出:

1, true, Sam

这是可能的,尽管
val(x,y)=arrayOf(20,“Hello”)
即使在Java中,在一行中声明多个变量真的很糟糕吗?我认为在某些地方它可以减少冗余代码。这太愚蠢了。Kotlin被认为是简洁的,Java几乎不喜欢任何简洁的东西……毫无意义。
val(x,y)=listOf(20,“Hello”)
似乎分配一个列表只是为了在一行上初始化多个变量是错误的做法Kotlin不允许在一行上声明多个属性的事实并不能回答是否允许声明多个变量的问题。。。除非有人提供的信息表明Kotlin中的所有变量都是属性。这似乎是一个很好的例子,说明Java中真正优雅的东西(声明多个变量,而不是属性)在Kotlin中冗长而笨拙。链接到的问题是关于属性的。所以这不是关于变量的问题的重复。投票重新开放。一个回答说不可能在一行上声明多个属性并不意味着不可能在一行上声明多个变量。@LarsH哇,我自己甚至没有想到这一点。谢谢你的贡献。@LarsH谢谢你的评论。我已经更新了公认的答案,以澄清变量和属性。实际上,这就是为什么Kotlin浮出水面,使程序员的生活更轻松,避免空值,以便尽可能消除bug。在这种情况下,
字符串x,y,z没有任何意义…这是在利用。事实上,如果你只有两个varablek,你可以使用一对:
val(a,b)=“a”到“b”