1.toShort, "B"-> 2.toShort) val map1 = Map("A"-> 1.toShort) val-6ren">
gpt4 book ai didi

scala - Scala 中的 (-1).toShort 和 -1.toShort 有什么区别

转载 作者:行者123 更新时间:2023-12-04 23:36:58 25 4
gpt4 key购买 nike

给定以下 Scala 代码:

val mapAll= Map("A"-> 1.toShort, "B"-> 2.toShort)
val map1 = Map("A"-> 1.toShort)
val map2 = mapAll.map(x => (x._2, map1.getOrElse(x._1, -1.toShort)))

在这种情况下,IDEA 中显示的 map2 类型为 Map[Short, Int]。
我需要的是 Map[Short, Short]

但是,如果像这样将 -1 放入“()”中”
val map2 = mapAll.map(x => (x._2, map1.getOrElse(x._1, (-1).toShort)))

没关系。 IDEA中显示的map2类型是Map[Short, Short]

那么, "(-1).toShort"和 "-1.toShort"有什么区别

最佳答案

没有区别。在这种情况下,您可能被 IntelliJ 的错误类型推断所欺骗。您可以在使用 -Xprint:typer 编译 scalac 时看到这一点。旗帜:

val map2: scala.collection.immutable.Map[Short,Short] = 
mapAll.map[(Short, Short), scala.collection.immutable.Map[Short,Short]](
((x: (String, Short)) => scala.Tuple2.apply[Short, Short](
x._2, map1.getOrElse[Short](x._1, -1.toShort))))
(immutable.this.Map.canBuildFrom[Short, Short]);

我们还可以通过简化示例来验证这一点:
val shortOne = -1.toShort
val shortTwo = (-1).toShort

并用 -Xprint:jvm 编译查看最后发出的步骤:
val shortOne: Short = -1.toShort();
val shortTwo: Short = -1.toShort();

你可以看到两者是相同的。

关于scala - Scala 中的 (-1).toShort 和 -1.toShort 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51298930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com