让我说我有:
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
参数?这样我就可以同时运行sayHi
和sayHello
?
我错误地在我的代码中有以下内容:
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")
答案 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))