Thực tế là các kiểu cấu trúc được thực hiện thông qua sự phản chiếu. Có thể có bất kỳ cấu trúc ngôn ngữ nào khác sử dụng sự phản chiếu không?Tính năng nào của Scala được thực thi bên trong bằng cách sử dụng sự phản chiếu?
Trả lời
này liên quan chặt chẽ với các loại cấu trúc, nhưng bất kỳ trường hợp đối tượng ẩn danh, tức là
new { def print = ("hello world") }.print
sẽ sử dụng phản ánh.
http://scala-programming-language.1934581.n4.nabble.com/Structural-types-reflection-td3071599.html
+1: Điều này có ý nghĩa khi xác định chuyển đổi tiềm ẩn, do đó, nó rất đáng để chỉ ra một cách riêng biệt. Tóm lại, luôn luôn định nghĩa một lớp * có tên * nằm ngoài hàm 'implicit' và định nghĩa một hàm * riêng biệt * ẩn để chuyển đổi thành lớp đó. –
Đây chính xác là những gì tôi làm khi tôi xác định một chuyển đổi tiềm ẩn để thêm một phương thức vào một lớp - thời gian để thay đổi. – Russell
Nếu bạn xem xét isInstanceOf/asInstanceOf như phản ánh, sau đó mô hình phù hợp dựa trên chúng
Đó không phải là sự phản chiếu, đó là việc kiểm tra và đúc kiểu và rất nhanh. – vadipp
@vadipp - vâng, có vẻ như chúng ta không nên ngại sử dụng nó bất cứ khi nào chúng tôi có khuynh hướng làm như vậy: http://stackoverflow.com/questions/103564/the-performance-impact-of-using-instanceof-in- java – bbarker
Nó không phải là một cấu trúc ngôn ngữ, nhưng ScalaTest bao gồm Suite.execute
, trong đó sử dụng phản ánh để tìm và gọi các phương pháp kiểm tra.
Hình ảnh pattern matching của Scala có sử dụng bất kỳ phản ánh nào đằng sau hậu trường không?
Afaik, đối sánh mẫu chỉ sử dụng các phương thức kiểm tra kiểu, kiểu đúc và phương thức 'không áp dụng '. Đối với các lớp thư viện chuẩn, trình biên dịch cũng có thể tạo ra các switch JVM nguyên bản, các cấu trúc 'if-else' và như vậy. Phản ánh là không cần thiết ở đây. – vadipp
_What_ là loại kiểm tra, thực sự? – matanster
Phương pháp gọi trong các loại cấu trúc phụ thuộc vào phản ánh:
type T = { def startsWith(x:String):Boolean }
def doSomethingWith(x:T) = x.startsWith("abc")
doSomethingWith("abcdef")
OP được đề cập cụ thể về các loại cấu trúc và được yêu cầu cho các ví dụ khác. –
@pelotom: thông báo OP cũng là Ken Bloom. – IttayD
@IttayD: Huh? OP là @Nermin Serifovic –
Enumerations dùng phản ánh để tìm hiểu về tất cả các giá trị có thể cho việc đếm cho nameOf
chức năng. (Xem phương thức populateNameMap
trong Enumeration.scala). Điều này được thực hiện một lần, lần đầu tiên bạn gọi nameOf
cho loại Enumeration
cụ thể.
Trình thông dịch Scala sử dụng rất nhiều phản ánh.
- 1. Cách tạo các lớp .NET hiệu năng cao bằng cách sử dụng sự phản chiếu?
- 2. Làm thế nào để có được tên biến bằng cách sử dụng sự phản chiếu?
- 3. Phương pháp ghi đè trong DLL bằng cách sử dụng sự phản chiếu
- 4. Phản chiếu có thực sự chậm không?
- 5. Làm cách nào để so sánh các lớp học bằng cách sử dụng sự phản chiếu?
- 6. Thực hiện tên assembly bằng cách sử dụng sự phản chiếu
- 7. Lấy các giá trị trường tĩnh của một kiểu bằng cách sử dụng sự phản chiếu
- 8. Số lượng đối số sai khi gọi hàm tạo Scala bằng cách sử dụng phản chiếu
- 9. Cách đặt giá trị thuộc tính thông qua tên thẻ thuộc tính bằng cách sử dụng sự phản chiếu?
- 10. Làm thế nào để gọi một phương thức đối tượng Scala bằng cách sử dụng sự phản chiếu?
- 11. Lấy các giá trị của một IDictionary chung bằng cách sử dụng sự phản chiếu
- 12. Làm thế nào để tham chiếu một hàm từ bên trong thực thi của chính nó?
- 13. Cách lấy tên đối số bằng cách sử dụng sự phản chiếu
- 14. Tại sao tính năng Addable của Scala bị phản đối?
- 15. Làm thế nào để tạo ra một thể hiện của enum bằng cách sử dụng sự phản chiếu trong java?
- 16. Cách tự động đặt giá trị của thuộc tính của đối tượng bằng cách sử dụng phản chiếu?
- 17. Sử dụng phản xạ Scala với phản xạ Java
- 18. Lấy tên hàm sử dụng sự phản chiếu trong Golang
- 19. Tôi có thể khám phá các lớp bên trong được khai báo của lớp Java bằng cách sử dụng sự phản chiếu không?
- 20. Làm thế nào để chạy thực thi bên ngoài bằng cách sử dụng Python?
- 21. đối tượng khởi tạo với sự phản chiếu bằng cách sử dụng đối số hàm dựng
- 22. Cách từ chối phản chiếu bằng ReflectionPermission
- 23. Trong Java, làm thế nào để sử dụng sự phản chiếu để có được một phương thức tĩnh và thực thi nó?
- 24. Làm cách nào để thực thi chức năng bên ngoài khi một phần tử được nhấp?
- 25. C# xác định thuộc tính Nullable Loại DateTime khi sử dụng sự phản chiếu
- 26. Sự phản chiếu Scala với các kiểu tham số
- 27. tại sao tôi không thể tải thuộc tính AssemblyVersion bằng cách sử dụng phản chiếu?
- 28. Tạo một cá thể IList chung bằng cách sử dụng sự phản chiếu
- 29. Tạo đối tượng mới bằng cách sử dụng sự phản chiếu?
- 30. C# Nhận giá trị của parms bằng cách sử dụng phản chiếu
Cảm ơn tất cả các bạn đã trả lời! Tôi không thực sự chắc chắn phải làm gì vào thời điểm này. Sẽ không công bằng khi chấp nhận một người trong trường hợp này, nhưng cũng không thể chấp nhận nhiều người trong số họ. –
chấp nhận một đối tượng ẩn danh vì nó là duy nhất (ngoài các loại cấu trúc nói chung), nơi sự phản chiếu có thể khiến bạn gặp rắc rối về hiệu suất nghiêm trọng. (Có lẽ đó chỉ là tôi, nhưng tôi không thể để lại một trong những câu hỏi của tôi mà không có câu trả lời được chấp nhận.) –