在scala foreach循环中赋值

时间:2017-05-24 05:08:02

标签: scala bigdata

我正在学习scala,但遇到了一个简单的问题。我想使用foreach循环为变量赋值。

例如:

{{1}}

请告诉我如何在scala中实现这一目标?

2 个答案:

答案 0 :(得分:3)

1)你可以.map list使用scala> val initialOrders = List("order1", "order2", "order3") initialOrders: List[String] = List(order1, order2, order3) 如果你想处理它并想要一个其他东西的列表(就像数学f:A =&gt; B)< / em>的

输入设置

scala> def shipOrder(order: Any) = order + " is shipped"
shipOrder: (order: Any)String

<强>功能

scala> val shippedOrders = initialOrders.map(order => { val myorder = "my" + order; println(s"shipping is ${myorder}");  shipOrder(myorder) })
shipping is myorder1
shipping is myorder2
shipping is myorder3
shippedOrders: List[String] = List(myorder1 is shipped, myorder2 is shipped, myorder3 is shipped)

处理输入设置和存储输出

foreach

2)或者,当您不关心函数的输出时,您可以简单地在列表上使用scala> initialOrders.foreach(order => { val whateverVariable = order+ "-whatever"; shipOrder(order) }) 进行迭代。

select  subject,
    cuml_marks,
    max(cuml_marks) over (partition by subject)
    - min(cuml_marks) over (partition by subject) as cuml_diff
from (
    select subject,
        sum(marks) over (
            partition by subject order by id
            ) as cuml_marks
    from t
    ) t;

注意

What is the difference between a var and val definition in Scala?

答案 1 :(得分:2)

这是在List上运行foreach操作的正确方法。

val list: List[T] = /* list definition */
list foreach { x => var a = x; /* some operation */ }