这是我第一次尝试使用scala中的DSL:
object ListOfStringsDsl extends App {
object Commands {
val l: scala.collection.mutable.ListBuffer[String] = new scala.collection.mutable.ListBuffer();
def and(s: String) = {
l += s;
this
}
override
def toString = l.mkString(",")
}
println(Commands and("test") and("test2") toString)
}
打印:
test,test2
这是预期的输出。但是我想简化输出的创建方式,所以不用println(Commands and("test") and("test2") toString)
输出命令如何使用:
希望能够使用:
println(Commands "test" and "test2" toString)
如何在Scala中实现这一目标?
答案 0 :(得分:1)
我已成功隐式
case class Commands(val list: List[String]) {
def and(that: String) = Commands(that :: list)
}
implicit def command(cmd: String) = Commands(cmd :: Nil)
println("run1" and "wait")
我认为隐含是DSL的重要组成部分。