在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循环中赋值的主要内容,如果未能解决你的问题,请参考以下文章