将字符串附加到列表的 DSL

DSL to append Strings to List

这是我第一次尝试在 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 中实现这一点?

我隐式成功了

  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 的重要组成部分。