Scala 定义和执行输出单元的方法的规范方法?
我有一个输出Scala 定义和执行输出单元的方法的规范方法?,scala,Scala,我有一个输出单元的方法(函数)列表: var fns:List[() => Unit] = Nil def add(fn:() => Unit) = fns :+= fn // a method to add to the list 我想将println(“hello”)添加到列表中 add(() => println("hello")) 有没有比使用难看的括号更好的方法 我宁愿: add (println("hello")) // error here
单元的方法(函数)列表:
var fns:List[() => Unit] = Nil
def add(fn:() => Unit) = fns :+= fn // a method to add to the list
我想将println(“hello”)
添加到列表中
add(() => println("hello"))
有没有比使用难看的括号更好的方法
我宁愿:
add (println("hello")) // error here
def myCoolMethod = {
// do something cool
// may return something, not necessarily Unit
}
add (myCoolMethod) // error here
我尝试了var-fns:List[=>Unit]
和var-fns:List[Any=>Unit]
,fns:List[()=>Any]
等,但没有得到我想要的
第二个问题是,当我想执行列表中的方法时,如何执行。我用它工作:
fns foreach (_.apply)
有更好的办法吗 您可以按名称使用参数,而不是使用空参数列表的函数,如下所示:
var fns:List[() => Unit] = Nil
def add(fn: => Unit) = fns :+= (fn _)
add{ print("hello ") }
def myCoolMethod = { println("world") }
add(myCoolMethod)
fns foreach {_.apply}
// hello world
您可以使用
而不是.apply
:fns foreach{{code()}
,但我更喜欢.apply
您可以使用按名称参数,而不是像下面这样带有空参数列表的函数:
var fns:List[() => Unit] = Nil
def add(fn: => Unit) = fns :+= (fn _)
add{ print("hello ") }
def myCoolMethod = { println("world") }
add(myCoolMethod)
fns foreach {_.apply}
// hello world
您可以使用
而不是.apply
:fns foreach{code()}
,但我更喜欢.apply
我们可以有一个add
来接受方法的Seq
而不是一个方法吗?所以我可以做add(Seq(println(“hello”),mycolmethod))
@Jus12:不,没有宏,你不能按名称重复参数。我们可以有一个add
来接受方法的Seq
,而不是一个方法吗?所以我可以做add(Seq(println(“hello”),mycolmethod))
@Jus12:不,没有宏,你不能按名称重复参数。