Function 从scala中的其他两个函数创建一个函数?

Function 从scala中的其他两个函数创建一个函数?,function,scala,functional-programming,Function,Scala,Functional Programming,这个问题与coursera的scala课程有关,所以我想请你不要给我简单的解决方案,我可以复制粘贴,因为这会破坏coursera荣誉代码 这与第二项任务有关 def Set = Int => Boolean 可以看出,Set是一个返回天气与否的函数,给定的int是否是Set的一部分。到目前为止,这是简单明了的。然而,任务要求我创建一个联盟 def union(f: Set, s: Set): Set = ??? 此并集应返回满足两个集合条件的集合。 我怎么能这样做: 我认为可以通过将

这个问题与coursera的scala课程有关,所以我想请你不要给我简单的解决方案,我可以复制粘贴,因为这会破坏coursera荣誉代码

这与第二项任务有关

def Set = Int => Boolean
可以看出,Set是一个返回天气与否的函数,给定的int是否是Set的一部分。到目前为止,这是简单明了的。然而,任务要求我创建一个联盟

 def union(f: Set, s: Set): Set = ???
此并集应返回满足两个集合条件的集合。 我怎么能这样做:

我认为可以通过将函数添加到一起来实现这一点,但是下面的代码:

f + s
无法按预期正确编译

我的问题是:

如何从其他两个函数创建函数

x => if x == 0 true else false //first
x => if x == 1 true else false //second
什么应该等同于:

x => if x==0 || x == 1 true else false

我不是在问一个解决方案,而是我该如何构建这样的东西?

集合定义为从
Int
Boolean
的函数,“求和”两个集合不会返回
集合
对象,并集意味着一个元素要么在一个集合中,要么在另一个集合中,但始终表示为函数


我希望这不算太多,但如果给定一个元素,它应该满足
f
s
Set
被定义为从
Int
Boolean
的函数,“求和”两个集合不会返回
Set
对象,并集意味着一个元素要么在一个集合中,要么在另一个集合中,但始终表示为函数


我希望这不是太多,但如果给定一个元素,它应该满足
f
s

,正如我认为您已经理解的,这些集合是测试值是否满足每个集合的标准的函数

此类集合的并集还必须是返回布尔值的函数(如类型签名所示)

这(因为
Set
是一个类型别名)相当于:

def union(f: Int => Boolean, s: Int => Boolean): Int => Boolean
在简单的英语中,两个集合A和B的并集表示:“是A或B中的项目”

您的任务是编写一个函数来实现简单的英语规范


您不能将两个函数“相加”(至少不能以适用于此问题的方式),但可以将它们的结果组合起来。

正如我认为您已经了解的,这些集合是测试值是否符合每个集合的标准的函数

此类集合的并集还必须是返回布尔值的函数(如类型签名所示)

这(因为
Set
是一个类型别名)相当于:

def union(f: Int => Boolean, s: Int => Boolean): Int => Boolean
在简单的英语中,两个集合A和B的并集表示:“是A或B中的项目”

您的任务是编写一个函数来实现简单的英语规范


不能将两个函数“相加”(至少不能以适用于此问题的方式),但可以将它们的结果组合起来。

集合
的形式为
Set=Int=>Boolean
。给定
Int
如果值在
集合中,则函数将返回
true

如果我们想创建一个单例集,我们将返回一个新函数,它将比较传递给它的任何值和传递给创建它的函数的值

两个集合的并集,是一个集合加上另一个集合。这意味着您要查找的元素必须在一个或另一个集合中。但是我们如何得到新的集合,我们返回一个新的函数,这个函数只检查元素是否在一个集合中


请记住,在Scala中,函数可以返回函数,稍后可能会进行计算。我认为这是关键。

集合的形式是
Set=Int=>Boolean
。给定
Int
如果值在
集合中,则函数将返回
true

如果我们想创建一个单例集,我们将返回一个新函数,它将比较传递给它的任何值和传递给创建它的函数的值

两个集合的并集,是一个集合加上另一个集合。这意味着您要查找的元素必须在一个或另一个集合中。但是我们如何得到新的集合,我们返回一个新的函数,这个函数只检查元素是否在一个集合中


请记住,在Scala中,函数可以返回函数,稍后可能会进行计算。我认为这是关键。

首先,它是
类型集=
。不是
def
<代码>集合
是类型别名,而不是函数定义

现在,你的问题。您需要一个函数,当给定两个
Int=>Boolean
时,该函数将它们与OR组合,并返回一个
Int=>Boolean

首先,对于两个
Boolean
参数,您将如何执行此操作

def or(a: Boolean, b: Boolean) = a || b
现在我们已经走到一半了。我们所拥有的:

  • 一对
    Int=>Boolean
    函数
  • 一种函数,它接受两个
    Boolean
    s并返回一个
    Boolean
因此,我们所需要做的就是将每个
集合
应用于
Int
,得到一个
布尔值
和或结果。困惑可能就在这里

使用函数的最简单方法是显式执行它

def union(f: Set, s: Set): Set = {
    def doUnion(x: Int) = //apply x to f and s, return OR
    doUnion
}
但是我们可以,在Scala中,通过声明一个匿名函数来实现内联

def union(f: Set, s: Set): Set = x => //apply x to f and s, return OR

首先,它是
类型集=
。不是
def
<代码>集合
是类型别名,而不是函数定义

现在,你的问题。您需要一个函数,当给定两个
Int=>Boolean
时,该函数将它们与OR组合,并返回一个
Int=>Boolean

首先,对于两个
Boolean
参数,您将如何执行此操作

def or(a: Boolean, b: Boolean) = a || b
现在我们已经走到一半了。我们所拥有的:

  • 一对
    Int=>Boolean
    函数
  • 一种函数,它接受两个
    Boolean
    s并返回一个
    Boolean
所以我们需要做的就是应用程序