【问题标题】:Calling lists concatenation in ScalaScala中的调用列表连接
【发布时间】:2017-05-29 09:20:19
【问题描述】:

谁能解释一下是怎么回事

scala> List(1,2).:::(List(3,4))
res15: List[Int] = List(3, 4, 1, 2)

scala> List(1,2) ::: List(3,4)
res16: List[Int] = List(1, 2, 3, 4)

如果方法调用结果应该是相同的方法调用,它们怎么会不同?

【问题讨论】:

    标签: scala list


    【解决方案1】:

    如果是List(1,2).:::(List(3,4)),您可以直接在对象List(1,2) 上调用::: 方法。根据文档:

    @param prefix 要添加的列表元素。

    所以你得到:res15: List[Int] = List(3, 4, 1, 2)

    当您不使用 .(点)表示法时,::: 根据文档表现为 右关联 操作:

    @usecase def :::(前缀: List[A]): List[A] @inheritdoc

    示例: {{{List(1, 2) ::: List(3, 4) = List(3, 4).:::(List(1, 2)) = List(1, 2, 3, 4)}} }

    这意味着在 List(1,2) ::: List(3,4) 的情况下,方法 ::: 正在对象 List(3,4) 上被调用。

    右关联操作基本意思如下:

    xs ::: ys ::: zs 被解释为xs ::: (ys ::: zs)

    16.6 部分描述与示例相同。

    【讨论】:

    猜你喜欢
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多