Tôi đến với ruby từ PHP. Làm thế nào tôi có thể làm điều tiếp theo trong ruby?Phản ánh trong Ruby. Khởi tạo một đối tượng theo tên lớp đã cho
$className = 'ArrayObject';
$arrayObject = new $className();
Tôi đến với ruby từ PHP. Làm thế nào tôi có thể làm điều tiếp theo trong ruby?Phản ánh trong Ruby. Khởi tạo một đối tượng theo tên lớp đã cho
$className = 'ArrayObject';
$arrayObject = new $className();
Bạn có thể làm điều này:
arrayObject = Object::const_get('Array').new
Bạn cũng có thể sử dụng sau đây nếu bạn đang sử dụng Ruby on Rails:
array_object = "Array".constantize.new
Trông giống như giải pháp từ RoR. Cảm ơn bạn! – vooD
Thật đáng để chỉ ra rằng 'constantize' là một phần mở rộng cốt lõi được thêm vào Ruby bởi mô-đun ActiveSupport của Rails, tức là nó không phải là Ruby thuần túy. –
Điểm tốt John, tôi đã cập nhật câu trả lời của tôi. –
Nếu bạn có một lớp học, ví dụ như chuỗi :
a = String
a.new("Geo")
sẽ cung cấp cho bạn một chuỗi. Điều tương tự cũng áp dụng cho các lớp khác (số & loại tham số sẽ khác nhau).
Trong khi điều này không trực tiếp trả lời câu hỏi, đó là điểm tốt vì lớp là đối tượng, bạn có thể lưu trữ chúng giống như bất kỳ đối tượng nào khác và đây có thể là cách tiếp cận tốt hơn trong nhiều trường hợp bạn muốn sử dụng chuỗi bằng ngôn ngữ khác. – Chuck
Tuyệt! Cảm ơn rất nhiều! – vooD