gpt4 book ai didi

scala - 为什么在使用 List 时得到的结果与使用 Tuple 时得到的结果不同?

转载 作者:行者123 更新时间:2023-12-05 09:09:52 25 4
gpt4 key购买 nike

如果我尝试:

val someInput = List(('a', 2), ('b', 2))

for {
(k,v) <- someInput
} yield (k,v)


res0: List[(Char, Int)] = List((a,2), (b,2))

如果我这样做了:

for {
(k,v) <- someInput
} yield List(k,v)

res0: List[List[Int]] = List(List(97, 2), List(98, 2))

我不明白为什么我在使用列表时会得到 97 和 98?

最佳答案

编译器自动将键(Char)转换为Int(因为 JVM 字符表示 Unicode 代码点),因为值是 Int 和列表是同构的。 97 和 98 只是 'a''b' 在 Unicode(和 ASCII)中的十进制表示。

参见 this question为什么 Char 被隐式转换为 Int (注意 Int 没有转换为 Char 因为它是 32 位的而 Char 只有 16,因此它可能是一个有损转换)。

你也可以这样做

for {
(k,v) <- someInput
} yield List((k,v))

这样您就可以生成一个 (Char, Int) 的单例列表,并且您的类型将得到保留。结果将是 List(List((a, 2)), List((b, 2)))

关于scala - 为什么在使用 List 时得到的结果与使用 Tuple 时得到的结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61961835/

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