Tôi đang làm việc trên một giải pháp cho bản vẽ kỹ thuật (svg/ruby). Tôi muốn thao tác hình chữ nhật, và có một phương pháp add!
trong lớp này:Tại sao không có phương pháp sao chép sâu trong Ruby?
class Rect
def add!(delta)
@x1+=delta
... # and so on
self
end
end
Tôi cũng cần một phương pháp add
trả lại một Rect
, nhưng không phải thao tác self
:
def add(delta)
r=self.dup/clone/"copy" # <-- not realy the 3 and no quotes, just in text here
r.add! delta
end
dup
và clone
không làm việc của tôi nhưng:
def copy; Marshal.load(Marshal.dump(self)); end
.
Tại sao một chức năng cơ bản như vậy không tồn tại trong Ruby thuần túy? Vui lòng không cho tôi biết rằng tôi có thể đảo ngược add
và add!
, cho phép add
thực hiện công việc và add!
gọi điện.
Tại sao nó không tồn tại? Nó có: 'Marshal.dump' +' Marshal.load'. Bạn có thể đặt tên một số ngôn ngữ lập trình có bản sao sâu về mức độ ngôn ngữ không? –
điểm của bạn, tôi nghĩ, rằng tôi giống như một đứa trẻ hư hỏng với Ruby, tìm kiếm tất cả ở đây, mà tôi bị mất ở những nơi khác: -D – halfbit
"Tại sao" làm cho câu hỏi này khó/không thể cho bất cứ ai khác hơn Matz, et al., để trả lời. –