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
Kotlin 使用“to”创建“Pair”是否可以接受?_Kotlin - Fatal编程技术网

Kotlin 使用“to”创建“Pair”是否可以接受?

Kotlin 使用“to”创建“Pair”是否可以接受?,kotlin,Kotlin,是标准库中的中缀函数。它可用于简明地创建对s: 0 to "hero" mapOf(0 to "hero", 1 to "one", 2 to "two") 与之相比: Pair(0, "hero") 通常,它用于简明地初始化Maps: 0 to "hero" mapOf(0 to "hero", 1 to "one", 2 to "two") 但是,在其他情况下,需要创建对。例如: "to be or not" to "be" (0..10).map { it to it * it

是标准库中的中缀函数。它可用于简明地创建
s:

0 to "hero"
mapOf(0 to "hero", 1 to "one", 2 to "two")
与之相比:

Pair(0, "hero")
通常,它用于简明地初始化
Map
s:

0 to "hero"
mapOf(0 to "hero", 1 to "one", 2 to "two")
但是,在其他情况下,需要创建
对。例如:

"to be or not" to "be"

(0..10).map { it to it * it }

从风格上讲,(ab)以这种方式使用
是否可以接受?

仅仅因为提供了一些语言功能并不意味着它们比某些东西更好。可以使用
对来代替
,反之亦然。真正的问题是,您的代码是否仍然简单,是否需要一些读者阅读前面的故事才能理解当前的故事?在上一个
map
示例中,它没有给出它正在做什么的提示。想象有人在读
{it to it*it}
,他们很可能会感到困惑。我认为这是一种虐待

to
中缀提供了一个很好的语法糖,它应该与一个命名很好的变量结合使用,告诉读者这个某物是什么。例如:

val heroPair = Ironman to Spiderman //including a 'pair' in the variable name tells the story what 'to' is doing.
或者可以使用作用域函数

(Ironman to Spiderman).let { heroPair -> }

仅仅因为提供了一些语言特性并不意味着它们比某些东西更好。可以使用
对来代替
,反之亦然。真正的问题是,您的代码是否仍然简单,是否需要一些读者阅读前面的故事才能理解当前的故事?在上一个
map
示例中,它没有给出它正在做什么的提示。想象有人在读
{it to it*it}
,他们很可能会感到困惑。我认为这是一种虐待

to
中缀提供了一个很好的语法糖,它应该与一个命名很好的变量结合使用,告诉读者这个某物是什么。例如:

val heroPair = Ironman to Spiderman //including a 'pair' in the variable name tells the story what 'to' is doing.
或者可以使用作用域函数

(Ironman to Spiderman).let { heroPair -> }

你要求的是个人观点,所以这是我的。
我发现这种语法对于简单代码来说是一个巨大的胜利,尤其是在阅读代码时。用括号阅读代码,很多都会造成精神压力,想象一下你每天要复习/阅读上千行代码;(

你要求的是个人观点,所以这是我的。
我发现这种语法对于简单的代码来说是一个巨大的胜利,尤其是在阅读代码时。阅读带有括号的代码,其中很多都会造成精神压力,想象一下你每天要复习/阅读上千行代码;(

我认为没有权威的答案。Kotlin中唯一的例子是使用
mapOf()
创建简单的常量映射,但是没有任何提示表明
to
不应该在其他地方使用

所以这将归结为个人品味的问题

对我来说,我很乐意在任何地方使用它,它表示某种映射,因此在
map{…}
表达式中,我似乎很清楚,就像在
mapOf(…)
列表中一样它不经常用于复杂表达式中,因此我可能会使用括号来保持优先级清晰,和/或简化表达式,以便不需要它们


如果它没有表示映射,我会更犹豫地使用它。例如,如果您有一个方法返回两个值,那么使用显式
Pair
(尽管在这种情况下,为返回值定义简单的数据类会更清晰)

我认为没有权威的答案。Kotlin中唯一的例子是使用
mapOf()
创建简单的常量映射,但是没有任何迹象表明
to
不应该在其他地方使用

所以这将归结为个人品味的问题

对我来说,我很乐意在任何地方使用它,它表示某种映射,因此在
map{…}
表达式中,我似乎很清楚,就像在
mapOf(…)
列表中一样它不经常用于复杂表达式中,因此我可能会使用括号来保持优先级清晰,和/或简化表达式,以便不需要它们


如果它不表示映射,我会更犹豫使用它。例如,如果您有一个返回两个值的方法,那么使用显式的
可能会更清晰(尽管在这种情况下,为返回值定义一个简单的数据类会更清晰)

不要害怕-这对我来说似乎是一个非常明智的问题:-)(尽管我必须承认我是一个还没有提出任何问题的人…)我会使用
to
,如果从上下文中可以清楚地看到正在发生的事情,并且
Pair
如果对读者有帮助,那么在这个上下文中使用
Pair
…一个简单的例子:
fun whenOmittingReturnValue()=Pair(1,“many”)
可能比
fun省略returnvalue()=1到“many”更好
…当然,在这个特定的上下文中,
fun dontOmitReturnValue():Pair=1到“many”
可能是更好的选择…对我来说,这主要取决于上下文…
。将{it.some关联到it.other}
对我来说完全可以……在这种情况下,我不介意在下面有一个
,或者换句话说:(对我来说)
to
隐藏
——当你快速浏览代码时创建(这样你就可以处理
,这里是次要的)…写
Pair
更清楚地表明了这一点,在某些情况下也是有意义的。不要害怕-这对我来说似乎是一个非常明智的问题:-)(尽管我必须承认我=还没有问过任何问题的人…)如果从上下文中清楚发生了什么,我会使用