gpt4 book ai didi

scala - 为什么调用这样的函数在 Scala 中有效?

转载 作者:行者123 更新时间:2023-12-02 01:48:42 25 4
gpt4 key购买 nike

我有以下 Scala 代码片段:

type Set = Int => Boolean

def contains(s: Set, element:Int): Boolean = s(element)

def singletonSet(element: Int): Set = Set(element)

val oneElementSet = singletonSet(5)

contains(oneElementSet, 5) // true
contains(oneElementSet, 6) // false

我正在努力思考它的作用:Set(element)。看起来它将用 element 代替 Int 参数,以产生这个:5 => Boolean。哪里都没有可比性,那为什么oneElementSet(5)返回true,oneElementSet(6)返回false呢?

谢谢!

最佳答案

Scala 对类型和值有单独的命名空间。你的类型别名定义了类型命名空间中的Set是什么,但是在singletonSet的定义中Set来自于value命名空间,实际上是伴生对象 scala.collection.immutable.Set . Set(element) 调用伴生对象的 apply 方法,该方法返回一个 scala.collection.immutable.Set[Int],它变成out 是 Int => Boolean 的子类型,因此也是 Set(您的类型别名)。

关于scala - 为什么调用这样的函数在 Scala 中有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063292/

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