后缀或中缀形式?

时间:2013-11-14 09:07:12

标签: scala

至少根据IntelliJ Idea,建议不要在Scala中使用Postfix表单。我想我甚至已经读过它了。虽然建议使用中缀。我想知道,这里的形式是什么:

val out = new OutputStreamWriter(connection.getOutputStream)
out write text  // infix
out flush ()    // postfix or infix?

我本来可以写out flush()而且它会是后缀形式,对吗?

但是,我也可以完成out flush ()(注意空格)并且它似乎是中缀形式,其中out是一个对象,flush是一种方法, () - 是Unit类型的空参数列表 - 就像out write text一样,但text代替Unit,我们有{{1}}或()。

这是后缀还是中缀形式?

1 个答案:

答案 0 :(得分:2)

就样式指南而言,由于括号,out flush()out flush ()都不是后缀。 out flush将被视为后缀。区别在于scala解析器与分号推理和后缀运算符的行为奇怪,如here所述。通过在刷新后添加括号,可以消除以您不期望的方式解析语句的可能性。我会用out flush()。在方法名称后直接添加括号是具有副作用的方法的标准