在 Scala 中迭代方法列表
Iterate method list in Scala
我刚刚开始使用 Scala(使用 Python 作为主要语言已经有一段时间了),我无法弄清楚如何迭代方法列表并调用每个方法方法。
在 Python 我会这样做:
>>> def a():
... return "a"
...
>>> def b():
... return "b"
...
>>> c=[a,b]
>>> for i in c:
... i()
...
'a'
'b'
我如何在 Scala 中做同样的事情?到目前为止,我有:
scala> def a = {
| "a";
| }
a: String
scala> def b = {
| "b";
| }
b: String
scala> val z = List(a,b)
z: List[String] = List(a, b)
但我无法对此进行迭代。我尝试使用 foreach,但我不确定如何调用函数
非常感谢帮助
看起来当您将 a
和 b
添加到列表时,会计算 def 并将结果存储在列表中
scala> def a = "strA"
a: String
scala> def b = "strB"
b: String
scala> val z = List(a ,b )
z: List[String] = List(strA, strB)
你可以把一个方法(def
)转换成一个函数,方法是在末尾加上一个_
(我认为这叫做ETA扩展)
scala> val z = List(a _ ,b _)
z: List[() => String] = List(<function0>, <function0>)
scala> z.foreach(f => println(f())) // for each function f, call it
strA
strB
你可以这样试试:
def a = "a"
def b = "b"
def c = List(a,b)
c foreach (println(_))
scala> c foreach (println(_))
一个 b
我刚刚开始使用 Scala(使用 Python 作为主要语言已经有一段时间了),我无法弄清楚如何迭代方法列表并调用每个方法方法。
在 Python 我会这样做:
>>> def a():
... return "a"
...
>>> def b():
... return "b"
...
>>> c=[a,b]
>>> for i in c:
... i()
...
'a'
'b'
我如何在 Scala 中做同样的事情?到目前为止,我有:
scala> def a = {
| "a";
| }
a: String
scala> def b = {
| "b";
| }
b: String
scala> val z = List(a,b)
z: List[String] = List(a, b)
但我无法对此进行迭代。我尝试使用 foreach,但我不确定如何调用函数
非常感谢帮助
看起来当您将 a
和 b
添加到列表时,会计算 def 并将结果存储在列表中
scala> def a = "strA"
a: String
scala> def b = "strB"
b: String
scala> val z = List(a ,b )
z: List[String] = List(strA, strB)
你可以把一个方法(def
)转换成一个函数,方法是在末尾加上一个_
(我认为这叫做ETA扩展)
scala> val z = List(a _ ,b _)
z: List[() => String] = List(<function0>, <function0>)
scala> z.foreach(f => println(f())) // for each function f, call it
strA
strB
你可以这样试试:
def a = "a"
def b = "b"
def c = List(a,b)
c foreach (println(_))
scala> c foreach (println(_))
一个 b