Scala có identity
hàm tổng quát trong Predef:Kotlin có chức năng nhận diện không?
def identity[A](x: A): A
Liệu Kotlin có một cơ sở tương tự trong thư viện chuẩn? Tất nhiên tôi chỉ đơn giản có thể sử dụng { it }
thay vào đó, nhưng tôi thấy identity
dễ đọc hơn, và instantiating tất cả những lambdas là một chút lãng phí.
Tôi phải có thể sử dụng chức năng identity
này ở những nơi có chức năng (Foo) -> Foo
, cho bất kỳ loại nào Foo
. Có phải một chức năng như vậy có thể thực hiện được trong hệ thống kiểu của Kotlin không? (Trong trường hợp của Scala, có một chuyển đổi ngầm mà kết thúc tốt đẹp các phương pháp bên trong một đối tượng hàm hoặc một cái gì đó.)
'val f: (String) -> String = identity' không hoạt động ... – fredoverflow
Bạn cần viết ':: identity' để tạo một đối tượng hàm từ một hàm.Điều này tương tự như các tham chiếu phương thức của Java. –
Hey! Tôi đã tìm thấy một trường hợp sử dụng cho một chức năng như vậy! Đó là hàm 'list.toMap (A, B)' như sau: http://stackoverflow.com/questions/32935470/how-to-convert-list-to-map-in-kotlin/32938733#32938733 Hãy xem xét rằng sẽ có 'vui nó (x) = x', hơn' list.toMap (:: it, {it.length}) 'chuyển đổi một danh sách thành một bản đồ trong đó các phần tử là các khóa. – voddan