【发布时间】:2016-04-14 00:00:31
【问题描述】:
我正在尝试在 Scala 中设计 DSL。为此,我想在精确字符串上创建一个隐式函数。 我知道要为任何字符串创建一个隐式函数,我可以这样写:
class StringPlus(str: String) {
def some_function(): Unit = do_something
}
implicit def string2StringPlus(str: String) = new StringPlus(str)
但我不知道如何修改它以仅为某些字符串创建此隐式函数。是否可以为隐式函数提供布尔条件,以便仅在布尔条件为真时创建隐式函数(例如,如果字符串的长度为 5 或更长,如果字符串的第一个字母是字母“a”等)而不是所有字符串?
【问题讨论】:
-
您的字符串是编译时的常量(例如
magicMethod "this-is-always-foo")还是依赖于运行时(例如magicMethod readFromStdIO)? -
你能说一下你将如何使用这个隐式函数吗?即使有可能,我也看不出它有什么用处
标签: string scala dsl implicit-conversion implicit