gì đang xảy ra trong mỗi một trong các hình thức quy định foo ?:scala: 'foo def = {1}' vs 'foo def {1}'
scala> def foo = {1}
foo: Int
scala> foo
res2: Int = 1
Nhưng:
scala> def foo {1}
foo: Unit
scala> foo
scala>
gì đang xảy ra trong mỗi một trong các hình thức quy định foo ?:scala: 'foo def = {1}' vs 'foo def {1}'
scala> def foo = {1}
foo: Int
scala> foo
res2: Int = 1
Nhưng:
scala> def foo {1}
foo: Unit
scala> foo
scala>
Xem thêm this question and answer trên SO:
Trong Scala nếu một phương pháp kê khai không có một dấu hiệu bình đẳng trước cơ thể của nó, trình biên dịch suy luận rằng các loại quả sẽ
Unit
Về cơ bản định nghĩa một hàm không có =
có nghĩa là trở về chức năng Unit
và trình biên dịch chèn một số ()
cho bạn ở cuối. Hàm trả về giá trị không phải là Unit
phải được khai báo với ký hiệu =
(mặc dù tất nhiên trình biên dịch có thể phỏng đoán kiểu trả về từ loại biểu thức).
thấy điều này trong http://anyall.org/scalacheat/:
//[bad!]
def f(x: Int) { x*x } //hidden error: without = it's a Unit-returning proc; causes havoc
Related: http://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration –