【问题标题】:Double variable argument list双变量参数列表
【发布时间】:2010-05-09 00:16:07
【问题描述】:

我需要这样的东西:

class Node (left : Node*, right : Node*)

我理解这个签名的含糊之处。

有没有比以下更好的解决方法?

class Node (left : Array[Node, right : Array[Node])
val n = new Node (Array(n1, n2), Array(n3))

也许像这样的某种分隔符?

val n = new Node (n1, n2, Sep, n3)

【问题讨论】:

    标签: scala scala-2.8 variadic-functions


    【解决方案1】:

    您可以有多个参数列表,每个参数列表可能有(或只是)一个重复参数:

    scala> def m1(ints: Int*)(strs: String*): Int = ints.length + strs.length
    dm1: (ints: Int*)(strs: String*)Int
    
    scala> m1(1, 2, 3)("one", "two", "three")
    res0: Int = 6
    

    我在 Scala 2.8 REPL 中运行了这个。我不知道它在 2.7 中无法正常工作的原因。

    【讨论】:

    • @Łukasz Lew:我只落后你 9 秒!
    • 所以我会给你答案:)
    【解决方案2】:

    这行得通:

    class Node (left : Node*) (right : Node*)
    

    Scala 很棒!

    【讨论】:

      【解决方案3】:

      我不相信你可以有多个可变参数。你也许可以做类似的事情

      class Node(left: Node*) {
        def apply(right: Node*) = ...
      

      然后你可以创建new Node(n1,n2)(n3)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-08
        • 2012-10-01
        • 2012-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多