带有隐式类和隐式转换的Scala

带有隐式类和隐式转换的Scala,scala,parsing,playframework-2.0,implicit,Scala,Parsing,Playframework 2.0,Implicit,a尝试添加非回溯~>和![U] (q:=>Parser[U]):Parser[U]=Parser~!q^^{案例a~b=>b}命名为(“~>!”) def Parser[U]):Parser[T]=Parser~!q^^{案例a~b=>a}("这不是一个bug。问题是要解决字符串上的~>!,编译器必须链接两个隐式转换:从字符串到解析器和从解析器到助手这是不允许的。因此,您需要添加从字符串到助手的直接转换r: implicit def stringToHelper(s: String): help

a尝试添加非回溯~>和![U] (q:=>Parser[U]):Parser[U]=Parser~!q^^{案例a~b=>b}命名为(“~>!”)
def Parser[U]):Parser[T]=Parser~!q^^{案例a~b=>a}("这不是一个bug。问题是要解决
字符串
上的
~>!
,编译器必须链接两个隐式转换:从
字符串
解析器
和从
解析器
助手
这是不允许的。因此,您需要添加从
字符串
助手的直接转换r

implicit def stringToHelper(s: String): helper[String] = new helper(literal(s))

如果需要,也可以从
Regex
helper

好的,谢谢,对于方法参数,它只是一个转换。为什么不允许?我觉得很沮丧。在这种情况下添加直接转换工作,但是如果我们不知道有多少转换,这将成为一个真正的问题。谢谢回答znd为我的英语感到抱歉也请看:因为如果允许的话1)编译器会花更多时间搜索隐式,然后停止搜索并说该方法确实不可用(而且构建时间已经够糟糕了);2) 你会更经常地得到它。
def groupe : Parser[Group] =  "group(" ~>! identifier <~!  ")"
implicit def stringToHelper(s: String): helper[String] = new helper(literal(s))