IntelliJ一直建议将.length == X替换为.lengthCompare(X) == 0。为什么这样更好呢?不太明白,因为建议的更改更冗长。
.length == X
.lengthCompare(X) == 0
mutmk8jj1#
它更高效。由于length是对List这样的集合的linear操作,所以执行x.length == 3需要先计算长度,然后将其与值进行比较,另一方面,.lengthCompare会在发现比较已经错误时终止计算长度。
length
List
linear
x.length == 3
.lengthCompare
v440hwme2#
在Scala 2.13中,我们有lengthIs方法,可以用来比较某个集合的长度,就像这个用例中的length一样,但是lengthCompare是隐藏的!所以它既高效又可读。
lengthIs
lengthCompare
val list = List(1,2,3) list.lengthIs > 2 // true
https://www.scala-lang.org/api/2.13.4/scala/collection/Seq.html#lengthIs:scala.collection.IterableOps.SizeCompareOps
2条答案
按热度按时间mutmk8jj1#
它更高效。
由于
length
是对List
这样的集合的linear
操作,所以执行x.length == 3
需要先计算长度,然后将其与值进行比较,另一方面,.lengthCompare
会在发现比较已经错误时终止计算长度。v440hwme2#
在Scala 2.13中,我们有
lengthIs
方法,可以用来比较某个集合的长度,就像这个用例中的length
一样,但是lengthCompare
是隐藏的!所以它既高效又可读。https://www.scala-lang.org/api/2.13.4/scala/collection/Seq.html#lengthIs:scala.collection.IterableOps.SizeCompareOps