在Scala中为+运算符添加空格给出了不同的结果?
Scala的新手在这里在Scala中为+运算符添加空格给出了不同的结果?
试图
(1)。+(2)返回的3 int值,到目前为止好
但
1。+(2)返回一个双3.0值。
但是,如果你这样做
1。 +(2)它返回的Int值为3.
注意:这和上面的唯一区别是“1”之后的空格在Scala中空格是否重要?我更加好奇1。+(2)如何返回一个Double,因为它看起来像一个Double,然后向它添加“2”。
1. +(2)正在调用双“1.”上的+方法。这是Java语法的结果,其中“1”相当于1.0。
出于兴趣,你知道什么'1。 +(2)'解析为? “。”会被默默忽略吗? – SubmittedDenied 2011-06-10 02:32:09
在这种情况下,点用于调用1上的+方法。下面是使用空白后的另一个示例。并在方法名称之前:val nums = 1 :: 2 :: Nil;数量。反向 – mpilquist 2011-06-10 02:34:14
@SubmittedDenied:认为它是'ONE.plus(TWO)'。 – 2011-09-19 04:39:02
你碰到了头,'1。+(2)'是一个double,因为'1.'是一个双精度型,double + int型返回一个double精度。在'1'后加一个空格表示'+'的第一个操作数没有被解析为double,所以操作是'int + int' - 返回一个int。 – SubmittedDenied 2011-06-10 02:19:42
谢谢,这只是令人困惑/令人惊讶的是,空间可能在scala中很重要。 – rajasaur 2011-06-10 02:24:35
'1.'是一个单独的标记,因此在'1'和'.'之间放置一个空格总是很重要。 'val y = sin x'不同于'val y = sinx'也是 – 2011-06-10 06:43:43