在scala foreach循环中赋值

Posted

技术标签:

【中文标题】在scala foreach循环中赋值【英文标题】:assign value in scala foreach loop 【发布时间】:2017-05-24 05:08:01 【问题描述】:

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

例如:

List A
foreach x in A  variable b = x; => then some operation => print result

您能告诉我如何在 scala 中实现这一目标吗?

【问题讨论】:

List 的类型是什么?它是 Int、String 等的列表吗? 这可以是任何类型,字符串,整数,双精度。我需要一个通用的解决方案,我可以申请所有类型的列表 这是你应该做的。验证列表:列表[T]; list.foreach( x => var a = x; /* 一些操作 */ ) 除非您重新分配其他内容,否则您可能希望 a 成为 val 以使其不可变 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

1) 如果你想处理它并想要一个其他东西的列表,你可以在list 上使用.map(就像数学中的 f:A=>B) p>

输入集

scala> val initialOrders = List("order1", "order2", "order3")
initialOrders: List[String] = List(order1, order2, order3)

功能

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)

2) 或者,当您不关心函数的输出时,您可以简单地使用列表中的foreach 进行迭代。

scala> initialOrders.foreach(order =>  val whateverVariable = order+ "-whatever";  shipOrder(order) )

注意

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

【讨论】:

以上是关于在scala foreach循环中赋值的主要内容,如果未能解决你的问题,请参考以下文章

js中for循环和forEach执行次数的坑

for和foreace的区别

我可以用foreach遍历两个大小相等的循环吗? [复制]

foreach与for的区别

如何在 foreach 循环中为 char 变量赋值? C#

scala while循环赋值