2011-06-10 44 views
5

Scala的新手在这里在Scala中为+运算符添加空格给出了不同的结果?

试图

(1)。+(2)返回的3 int值,到目前为止好

1。+(2)返回一个双3.0值。

但是,如果你这样做
1。 +(2)它返回的Int值为3.
注意:这和上面的唯一区别是“1”之后的空格在Scala中空格是否重要?我更加好奇1。+(2)如何返回一个Double,因为它看起来像一个Double,然后向它添加“2”。

+2

你碰到了头,'1。+(2)'是一个double,因为'1.'是一个双精度型,double + int型返回一个double精度。在'1'后加一个空格表示'+'的第一个操作数没有被解析为double,所以操作是'int + int' - 返回一个int。 – SubmittedDenied 2011-06-10 02:19:42

+0

谢谢,这只是令人困惑/令人惊讶的是,空间可能在scala中很重要。 – rajasaur 2011-06-10 02:24:35

+0

'1.'是一个单独的标记,因此在'1'和'.'之间放置一个空格总是很重要。 'val y = sin x'不同于'val y = sinx'也是 – 2011-06-10 06:43:43

回答

11

1. +(2)正在调用双“1.”上的+方法。这是Java语法的结果,其中“1”相当于1.0。

+0

出于兴趣,你知道什么'1。 +(2)'解析为? “。”会被默默忽略吗? – SubmittedDenied 2011-06-10 02:32:09

+3

在这种情况下,点用于调用1上的+方法。下面是使用空白后的另一个示例。并在方法名称之前:val nums = 1 :: 2 :: Nil;数量。反向 – mpilquist 2011-06-10 02:34:14

+0

@SubmittedDenied:认为它是'ONE.plus(TWO)'。 – 2011-09-19 04:39:02

相关问题