【问题标题】:Scala - Variable amount of function arguments as method parametersScala - 可变数量的函数参数作为方法参数
【发布时间】:2018-06-28 01:44:39
【问题描述】:

我是一个对 Scala 着迷的新手,我正在寻找一种方法来创建将可变数量的函数作为参数的方法/函数。

在常规 VarArgs 中使用 * 符号的示例

def someMethod(aNumber: Int, multipleFunctions: Int => Boolean*) = {
    var flag = true
    for (func <- multipleFunctions; if (!func(aNumber)) flag = false
    flag
}

我意识到我可以接受一组函数,但如果这样的话,感觉就像必须有一种使用 var args 的方法。

【问题讨论】:

  • fns: Function1[Int, Boolean]*
  • 我很确定您可以简单地将 Int =&gt; Boolean 括在括号中,这样就可以解决问题。
  • @cchantep 那很快,非常感谢。我猜你已经知道了,但这也可以写成 Function[Int, Boolean],IntelliJ 似乎更喜欢这样。
  • @stefanobaghino 你说得对,我可能应该想到这一点,谢谢!

标签: scala function methods variadic-functions


【解决方案1】:

* 令牌的评估优先于 =&gt;,因此您可以通过将 Int =&gt; Boolean 类型括在括号中来简单地解决您的问题:

def someMethod(aNumber: Int, multipleFunctions: (Int => Boolean)*)
//                                              ^     here!    ^

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2014-03-08
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多