将字符串附加到列表的 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 的重要组成部分。
这是我第一次尝试在 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 的重要组成部分。