nghĩa là gì dưới đây khai scala:nghĩa là gì 'MyType = Int => Boolean'
type MyType = Int => Boolean
Đây là hiểu biết của tôi:
Tôi tuyên bố một loại mới 'MyType' nhưng có nghĩa là gì chức năng bậc cao 'Int => Boolean'
nghĩa là gì dưới đây khai scala:nghĩa là gì 'MyType = Int => Boolean'
type MyType = Int => Boolean
Đây là hiểu biết của tôi:
Tôi tuyên bố một loại mới 'MyType' nhưng có nghĩa là gì chức năng bậc cao 'Int => Boolean'
Nó không quá nhiều tuyên bố một mới loại như tuyên bố một loại mới alias. Chúng vẫn là cùng loại: nhưng bí danh cho phép bạn viết nó ngắn gọn hơn một chút.
Int => Boolean
là loại hàm nhận một đối số, một Int và trả về Boolean.
Ví dụ, một chức năng như "lớn hơn 5" có thể có loại Int => Boolean
:
type MyType = Int => Boolean
val greaterThan5: MyType = (x: Int) => x > 5
greaterThan5(7) // true
Bạn là chính xác, các biên dịch sau:
type MyType = Int => Boolean
def positive(x: Int) = x > 0
val fun: MyType = positive
fun(42) //yields true
Ở đây bạn khai báo kiểu bí danh nói rằng MyType
tương đương với hàm lấy Int
và trả lại Boolean
. Sau đó, bạn tạo một phương thức khớp với khai báo như vậy. Cuối cùng, bạn gán phương thức này cho biến số MyType
. Nó biên dịch và hoạt động tốt.
Lưu ý rằng đây chỉ là một alias, không phải là một loại mới:
trait MyType2 extends (Int => Boolean)
val fun2: MyType2 = positive _
error: type mismatch;
found : Int => Boolean
required: MyType2
val fun2: MyType2 = positive _
^
Lưu ý rằng 'Int => Boolean' là _not_ một hàm bậc cao (thậm chí không nếu đoạn bắt nguồn từ [Coursera của] (http://www.coursera.org/course/progfun) "Tuần 2: Chức năng Đặt hàng Cao cấp" ;-)) – netzwerg
@netzwerg vâng, có vẻ như việc tìm kiếm ngay cả những thứ 'đơn giản' cũng khó khăn. – user701254
Đừng lo lắng, điều này thực sự đơn giản: Các hàm bậc cao hơn là các hàm có chức năng khác như tham số đầu vào của chúng, hoặc trả về/xuất một hàm khác ([Wikipedia] (http://en.wikipedia.org/wiki/Higher -order_function)) – netzwerg