gpt4 book ai didi

scala - 我对 Scala Sets 的理解有什么问题?

转载 作者:行者123 更新时间:2023-12-01 10:51:28 24 4
gpt4 key购买 nike

完全披露:我正在(曾经?)参加 Coursera 的 Scala 类(class),但被关于 Sets 的第二个作业难倒了。我不只是在寻找答案(很容易获得)并且无论如何都会获得边际信用。但我真的很想了解发生了什么。

好的,所以这是第一个问题:“定义一个函数,它从一个整数值创建一个单例集:该集表示一个给定元素的集。”所以我的第一次尝试是这样的:

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

所以这个函数 singletonSet 只返回一个新创建的 Set。它可以这样调用:

val why = singletonSet(3)
// now why is a singleton set with a single integer, 3

这个实现看起来微不足道,所以我用谷歌搜索了答案,似乎是这样的:

def singletonSet(elem: Int): Set = (x => x == elem)

现在我的理解是 (x => x == elem) 是一个匿名函数,它接受一个整数 x 并返回一个 bool 值。但是……什么?因此,作为一名 JavaScript 开发人员,我决定翻译它:

function singletonSet(elem) {
return function(x) {
return x === elem;
};
};

然后我可以写(我在柯里化(Currying)吗?):

singletonSet(3)(4)

// singletonSet(3) => returns an anonymous function, function(x) { x === 3; };
// function(4) { return 4 === 3; }
// false

如果这与 Scala 中发生的情况非常接近,那么我似乎没有在创建单例集。相反,我只是检查两个数字是否相同。

我在这里错过了什么?我觉得这一定是一些非常基础的东西。

提前致谢。

最佳答案

记住这个集合的实现是一个函数。特别是它是一个 bool 函数,所以该函数可以看作是在问这个问题:“这个数字在集合中吗?- 真还是假。”您可以根据需要多次调用该函数,实际上是多次询问该问题:

“这个数在集合中吗?那个数在集合中吗?”等等等等

由于集合是单例集合,所以集合中只有一个数。因此,您通过调用该函数来使用该集合,并提出问题,实际上,“这个数字是集合中唯一且唯一的数字吗?” 所以你是对的这个集合,单例集合只是在问这两个数字是否相同。

需要强调的是,这个例子来自《Scala 中的函数式编程原理》类(class)。本类(class)并不意味着对 Scala 的简单介绍。实际上这门课是故意刁难的,目的是让大家对函数式编程有更深刻的理解。通常人们只会使用范围内不可变的 Set 类。

如果你想处理 -1000 到 1000 之间的偶数,你可能会使用像这样的迭代器:

(-1000 to 1000).withFilter(_ %2 == 0)

或:

(-1000 to 1000 by 2)

关于scala - 我对 Scala Sets 的理解有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309191/

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