Có điều gì tương đương với hàm SomeClass.metaClass.getProperty đáng chú ý của Groovy trong scala không? Điều này sẽ rất hữu ích trong việc tạo các ngôn ngữ cụ thể cho miền. Ví dụ: tôi có thể nói: val x = SomeClass(); x.arbitraryPropertyName
thay vì x.get("arbitraryPropertyName")
hoặc x("arbitraryPropertyName")
.ClassX.metaClass.getProperty của Groovy ở scala
5
A
Trả lời
9
Từ mô tả của bạn, tính năng này có vẻ giống như của Scala Dynamic
. Từ số Scaladoc,
Đặc điểm điểm đánh dấu cho phép lời gọi động. Các trường hợp x của đặc tính này cho phép các cuộc gọi x.meth (args) cho các tên phương thức tùy ý meth và các danh sách đối số args. Nếu cuộc gọi không được hỗ trợ bởi x, thì đó là được viết lại thành x.applyDynamic ("meth", args).
Nghĩa là, nếu lớp học của bạn kéo dài Dynamic
, sau đó gọi của mẫu x.arbitraryPropertyName
được dịch sang x.applyDynamic("arbitraryPropertyName")
, và tất nhiên bạn có thể xác định hành vi của applyDynamic
.