斯卡拉REPL不能自动完成的是来自隐式转换
问题描述:
,如果我在斯卡拉2.10 REPL(交互式斯卡拉壳)编写方法:斯卡拉REPL不能自动完成的是来自隐式转换
"""\w""".
而且按TAB
它给了我:
+ asInstanceOf charAt
codePointAt codePointBefore
codePointCount compareTo compareToIgnoreCase
concat contains ....
然而,缺少.r
。当我把相同的字符串放入eclipse中时,它也为我提供了.r
。如果我之前插入import scala.util.matching._
,情况也是如此。 为什么REPL不提供所有可能性?
如果我尝试使用unicode,例如REPL,REPL会带来更大的问题。我写:
"""\p{L}""".
并按TAB
它给我的错误:
scala> """\p{L}""".<console>:1: error: unclosed multi-line string literal
"""
^
再次,它工作正常在Eclipse。
REPL是如此的错误,还是我错过了什么?
答
的REPL仅显示字段和对象的方法,而.r
只能通过其把它变成一个StringOps
的隐式转换(augmentString
在scala.Predef
)。除了这个事实需要实施,没有人会这么做,这可能没有任何理由。当然,您仍然可以拨打.r
。
Scala IDE足够智能,可以在resolve implicits的地方使用,这就是为什么您可以在那里看到它的原因。
答
是的,r
缺失,但如果你写"""\w""".r
并按下输入它仍然工作res0: scala.util.matching.Regex = \w
。标签自动完成r
似乎并不是真正必要的。 unicode问题可能是由java引起的。如果您将-Dfile.encoding=UTF-8
传递给java,您可以明确请求UTF-8。这是一个post,它描述了如何做到这一点。
如果您使用Eclipse,我可以推荐Scala worksheet plugin这是一个很好的repl替代品。
链接已过期 – sygi 2015-02-25 13:35:11