2017-06-14 84 views
0

我想弄清楚一些Scala代码。这是一个创建可变Map和Ordering对象的代码片段。这些Scala语句是什么意思?你称这个语法是什么? [中缀表示法]

import scala.collection.mutable 

val score = mutable.Map(start -> 0d) withDefaultValue Double.PositiveInfinity 
val priority = Ordering by {n: Node => score(n) + heuristic(n)} 

你把这段代码称为哪里,你只是在没有逗号或括号的表达式后面加上术语?我有一种感觉,这是斯卡拉的功能方面,但不知道。花括号在这方面有不同的含义吗?

+0

编译器调整(或“脱糖”)“2 + 3”到更多的句法正确的“2。+(3)”。这种调整可以应用于任何类型(如'Int'),只需要一个参数(在本例中为'3')的方法(如'+')。 – jwvh

回答

3

你把这个代码放在哪里,你只需要在没有逗号或括号的表达式后面加上术语?

这是使用“中间符号”,看到http://docs.scala-lang.org/style/method-invocation.html

我有一种感觉,这是斯卡拉的功能方面,但不能确定。

这是'语法糖',与函数式编程没有直接关系。

大括号在这种情况下有不同的含义吗?

在此上下文中,大括号定义了一个表达式块。 更详细的讨论可在这里: What is the formal difference in Scala between braces and parentheses, and when should they be used?