将函数作为语句传递给另一个函数
Passing a function to another function as statement
我想编写一个函数,如果给定一个偶数作为参数,它将 return 为真,否则为假。此外,编写一个函数来过滤数字列表 return 只包含偶数。全部使用 Scala 函数式编程完成。这是我的:
def isEven(n:Int): Boolean = n % 2 == 0
println(isEven(4))
val filterEven = ( xs :List[Int] ) => {
for( x <- xs; if x % 2 == 0 ) yield x
}
println(filterEven(List(3,2,4,5,6,22,91)))
我的问题是,如何将第一个函数 "isEven" 传递给 "filterEven" 函数以替换 "if-statement"?
此致。
首先你在传入时给它起一个名字。
val filterEven = (xs :List[Int], filterFunc: Int => Boolean) => {
然后以新名称调用它。
for(x <- xs; if filterFunc(x)) yield x
请注意,现在 filterEven
不是您函数的好名称。传入的参数为filterFunc
,将决定你过滤的是偶数,还是奇数,还是小于100,还是.....
您可以将 isEven 作为参数传递给 xs.filter
def filterEven(xs: List[Int]) = xs.filter(isEven)
这在功能上等同于:
def filterEven(xs: List[Int]) = for { x <- xs if isEven(x) } yield x
我想编写一个函数,如果给定一个偶数作为参数,它将 return 为真,否则为假。此外,编写一个函数来过滤数字列表 return 只包含偶数。全部使用 Scala 函数式编程完成。这是我的:
def isEven(n:Int): Boolean = n % 2 == 0
println(isEven(4))
val filterEven = ( xs :List[Int] ) => {
for( x <- xs; if x % 2 == 0 ) yield x
}
println(filterEven(List(3,2,4,5,6,22,91)))
我的问题是,如何将第一个函数 "isEven" 传递给 "filterEven" 函数以替换 "if-statement"?
此致。
首先你在传入时给它起一个名字。
val filterEven = (xs :List[Int], filterFunc: Int => Boolean) => {
然后以新名称调用它。
for(x <- xs; if filterFunc(x)) yield x
请注意,现在 filterEven
不是您函数的好名称。传入的参数为filterFunc
,将决定你过滤的是偶数,还是奇数,还是小于100,还是.....
您可以将 isEven 作为参数传递给 xs.filter
def filterEven(xs: List[Int]) = xs.filter(isEven)
这在功能上等同于:
def filterEven(xs: List[Int]) = for { x <- xs if isEven(x) } yield x