Function 从scala中的其他两个函数创建一个函数?
这个问题与coursera的scala课程有关,所以我想请你不要给我简单的解决方案,我可以复制粘贴,因为这会破坏coursera荣誉代码 这与第二项任务有关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 = ??? 此并集应返回满足两个集合条件的集合。 我怎么能这样做: 我认为可以通过将
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
- 一种函数,它接受两个
s并返回一个Boolean
Boolean