Scala中定义的字符串运算符“ <-”在哪里?

时间:2019-12-09 08:55:01

标签: scala intellij-idea

我是scala的新手,对此有点困惑。我使用IntelliJ Idea。我知道Scala允许使用特殊字符作为方法。在IntelliJ Idea中,按住Command键并单击方法,或按Ctrl键并单击将您移至定义方法的位置。但是,在Scala中,当我在for循环中单击<-时,它会移动到:

  def foreach[U](f: Char => U): Unit = { ... } 

尽管问题是关于此特定运算符的,但我想知道如何找到已定义的其他运算符,以及为什么IntelliJ跳转到foreach语句?

2 个答案:

答案 0 :(得分:5)

与其他语言构造一样,

for的理解也在Scala Language Specification中定义。更具体地说,在Section 6.19 For Comprehensions and For Loops中。

尤其是,左箭头<-(也可以写为)是用于定义 generator 的语法:

  

生成器 ? ← ?从表达式?生成绑定,该表达式以某种方式与模式?匹配。

答案 1 :(得分:1)

<-java.lang.String类中没有scala.collection.immutable.StringOps方法。正如intellij所指出的,它只是foreach调用的语法糖。