【问题标题】:What does { val x = a; b.:::(x) } mean in Scala?{ val x = a; 是什么意思? b.:::(x) } 在 Scala 中是什么意思?
【发布时间】:2015-12-30 00:41:34
【问题描述】:

我是 Scala 的新手,正在研究一本关于它的书(Scala 编程)。我真的很迷茫,作者试图用下面的代码解释什么。谁能详细解释一下?

{ val x = a; b.:::(x) }

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    ::: 是一种将作为参数给定的列表添加到调用它的列表的方法

    你可以这样看

    val a = List(1, 2)
    val b = List(3, 4)
    val x = a
    
    b.prependList(x)
    

    但实际上对于单参数方法,如果它不是模棱两可的,那么 scala 允许跳过括号和点,这就是该方法应该如何用于不难看

    x ::: b
    

    它只会加入这两个列表,但这里有一些技巧

    如果方法名以 : 结尾,则以另一种方式绑定

    所以输入x ::: b 就像这种类型的事情完成了(x):::.b。你显然不能在 scala 中这样输入它,不会编译,但这就是发生的事情。感谢x 位于运算符的左侧,它的元素将位于此调用结果列表的左侧(开始)。

    哦,好吧,现在我可能为您找到了更多解释,以及您发布的同一段代码,以回答这个问题:What good are right-associative methods in Scala?

    【讨论】:

    • val a=List(1,2,3) 我对此进行了测试并看到了区别谢谢你们 val b=List(3,4,5) val c=a::b print(c ) val d=a:::b print(d)
    • :: 仅添加一个元素,因此如果您将列表作为元素添加到另一个列表,您将拥有List[Any] = List(List(1, 2, 3), 4, 5, 6)
    【解决方案2】:

    假设 a 和 b 是列表:它将 a 分配给 x,然后返回列表 b 前面加上列表 x

    例如,如果val a = List(1,2,3)val b = List(4,5,6) 则返回List(1,2,3,4,5,6)

    【讨论】:

    • 呃,这是List上的一个方法。 Stream 方法是 #:::
    • 啊,对不起。我在想什么?现在我也不能撤回我的反对票。对不起。我赞成你的一些其他答案来弥补它。
    猜你喜欢
    • 2014-01-16
    • 2011-04-24
    • 2015-03-24
    • 2017-02-02
    • 2013-12-16
    • 2020-03-18
    • 2021-08-02
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多