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
更清楚地表明了这一点,在某些情况下也是有意义的。不要害怕-这对我来说似乎是一个非常明智的问题:-)(尽管我必须承认我=还没有问过任何问题的人…)如果从上下文中清楚发生了什么,我会使用来