2011-06-10 1 views
5

Scala newbie ở đâyThêm dấu cách vào toán tử + trong Scala cho kết quả khác nhau?

Cố

(1). + (2) trả về một giá trị Int 3, cho đến nay rất tốt
nhưng
1. + (2) trả về một giá trị đúp của 3,0 .

Nhưng nếu bạn làm
1. + (2) nó trả về giá trị Int là 3.
Lưu ý: Sự khác biệt duy nhất giữa điều này và ở trên là khoảng trống sau "1"

Không gian có quan trọng trong Scala không? Im tò mò hơn như thế nào 1. + (2) trả về một đôi như nó trông giống như nó phân tích cú pháp 1. là một đôi và sau đó thêm "2" vào nó.

+2

Bạn nhấn đinh trên đầu, '1. + (2)' là số tăng gấp đôi vì '1.' là số double và' double + int' trả về giá trị gấp đôi để bảo toàn độ chính xác. Việc bổ sung một dấu cách sau '1' có nghĩa là toán hạng đầu tiên cho' + 'không được phân tích cú pháp thành một double, do đó hoạt động là' int + int' - trả về một int. – SubmittedDenied

+0

cảm ơn, nó chỉ là khó hiểu/ngạc nhiên rằng không gian có thể quan trọng trong scala. – rajasaur

+0

'1.' là một mã thông báo duy nhất, vì vậy việc đặt dấu cách giữa' 1' và '.' sẽ luôn là vấn đề. 'val y = sin x' khác với' val y = sinx' cũng là –

Trả lời

11

1. + (2) đang gọi phương thức + trên Double "1.". Đây là sự chuyển đổi từ cú pháp Java, trong đó "1." tương đương với 1.0.

+0

Không quan tâm, bạn có biết '1. + (2) 'phân tích cú pháp? Liệu '.' có bị bỏ qua âm thầm không? – SubmittedDenied

+3

Trong trường hợp đó, dấu chấm được sử dụng để gọi phương thức + trên 1. Đây là một ví dụ khác về cách sử dụng khoảng trắng sau. và trước tên phương thức: val nums = 1 :: 2 :: Nil; số. đảo ngược – mpilquist

+0

@SubmittedDenied: nghĩ về nó là 'ONE.plus (TWO) '. –