2015-09-24 16 views
6

Tôi đã nhìn thấy một số mẫu mã scala nơi nhiều dòng mã được sử dụng như một khối mã không có dấu ngoặc nhọn, ví dụ:dấu ngoặc nhọn Không ghi trong scala cho nhiều dòng

x match { 
    case a:Int => 
    val b = 1 
    val c = b +3 
    println("hello!") 
    c 
    case _ => 5 
} 

cùng với một số chức năng rất dài mà sử dụng một param tiềm ẩn có dạng:

a.map { implicit x => 
    // many, many complex lines of code 
} 

như trái ngược với:

a.map { implicit x => { 
    // many, many complex lines of code 
}} 

tôi đã thấy rất nhiều tài liệu/Câu hỏi thường gặp nói rằng nhiều dòng mã nên được bao quanh luôn bằng dấu ngoặc nhọn, nhưng không thể tìm thấy lời giải thích cho những ngoại lệ này. Tôi rất thích hiểu hoặc có một trực giác tốt để không cảm thấy như phép thuật đối với tôi.

+0

Bạn có nhớ chỉ dẫn tài liệu mà bạn đang tham chiếu không? – aij

+1

Trả lời cho các hàm chức năng: http://stackoverflow.com/a/13873899/1296806 –

Trả lời

2

Trong trường hợp một tuyên bố, nội dung, trong khi nó trông giống như một khối thực sự là một phần biểu hiện của một hàm theo nghĩa đen, theo dạng arg => expr. Vì các câu lệnh case được kết thúc bằng một câu lệnh case khác của quăn đóng của khối case, các hàm của chữ được định nghĩa ngầm và biểu thức không cần các khối phân cách riêng của nó

Các vấn đề liên quan