2009-11-02 6 views
12

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> 
+0

Related: http://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration –

Trả lời

16

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à Unitphả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).