【发布时间】:2017-04-05 07:20:26
【问题描述】:
我想编写一个 API,让我可以轻松创建分层键,例如
/ foo / bar / baz
为此,我创建了以下类:
sealed trait Key {
def path: String
def /(key: String): Node = Node(this, key)
}
case object Root extends Key {
override def path: String = ""
}
final case class Node(parent: Key, key: String) extends Key {
override def path: String = s"${parent.path}/$key"
}
而且效果很好:
Root / "foo" / "bar"
现在,我还希望能够像这样包含“占位符”:
Root / "foo" / %
然后这应该返回一些东西,当一个字符串被应用时返回一个Key对象,并替换了给定的值,即
(Root / "foo" / %)("bar") == Root / "foo" / "bar"
请记住,这应该适用于 n 级,如下所示:
Root / % / "foo" / % / "bar"
【问题讨论】:
-
(Root / % / "foo" / % / "bar")("baz")会是什么?
标签: scala type-safety