DSL将字符串附加到列表

时间:2016-02-01 21:46:42

标签: scala dsl

这是我第一次尝试使用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中实现这一目标?

1 个答案:

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