Scala中的“捆绑”功能

时间:2018-05-04 15:42:20

标签: scala functional-programming

让我说我有:

val sayHello: Int => Unit = {_ => println("hello")}
val sayHi: Int => Unit = {_ => println("hi")}

以及foo

等功能
val foo: Int => Unit = {
  sayHi
}   
foo(123) //= prints hi

有没有办法写这个:

val bar: Int => Unit = {
  i =>
    sayHello(i)
    sayHi(i)
}

没有i参数?这样我就可以同时运行sayHisayHello

我错误地在我的代码中有以下内容:

val foo: Int => String = {
  sayHello
  sayHi
}

但这仅使用最后一个表达式,sayHello未运行。

一般来说,如果这个函数要返回除Unit以外的任何函数,那么让我们说一下将这些函数组合在一起的自动方式是什么

val Hello: Int => String = {_ => "hello"}
val Hi: Int => String = {_ => "hi"}

功能栏的最常见的实现是什么:

def bar: Int => Seq[String]

这样:

bar(123) // returns List("hello","hi")

1 个答案:

答案 0 :(得分:1)

怎么样:

def bar: Int => Seq[String] = i => Seq(Hello, Hi).map(_(i))

对于Unit - 返回功能案例,您可以将map替换为foreach

def bar: Int => Unit = i => Seq(Hello, Hi).foreach(_(i))