gpt4 book ai didi

scala - 为什么调用 explicity 的 cons 函数在 Scala 中对 Int 起作用?

转载 作者:行者123 更新时间:2023-12-02 08:48:17 24 4
gpt4 key购买 nike

您可以使用以下方法在 Scala 中创建一个新列表:

1 :: 2 :: Nil

根据我的理解,这可以重写为:

Nil.::(2.::(1))

主要是因为::fixty 但如果我写:

Nil :: 1 :: 2

我得到“value::is not a member of Int”这完全符合预期,因为在 scaladoc 中 Int 没有::,但我不明白为什么如果我将其翻译成:

1.::(2.::(Nil))

它可以作为输出:

List(1.0, 2.0)

看起来 scalac 自动将 12 转换为不同于 Int 的类型。那是对的吗?如果是,为什么会发生这种奇怪的类型?

最佳答案

这很有趣。

你的表情

1.::(2.::(Nil))

被编译器解析为

1. :: (2. :: (Nil))

因为 :: 是右结合的,所以与

1. :: 2. :: Nil

因为 1. 是编写 Double 的有效方式,所以与

1.0 :: 2.0 :: Nil

这是构造 List[Double]

的合法表达式
List(1.0, 2.0)

关于scala - 为什么调用 explicity 的 cons 函数在 Scala 中对 Int 起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670559/

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