Tôi có một lớp tùy chỉnh và muốn ghi đè toán tử gán. Dưới đây là ví dụ:Phương pháp Setter (nhiệm vụ) với nhiều đối số
class MyArray < Array
attr_accessor :direction
def initialize
@direction = :forward
end
end
class History
def initialize
@strategy = MyArray.new
end
def strategy=(strategy, direction = :forward)
@strategy << strategy
@strategy.direction = direction
end
end
Điều này hiện không hoạt động như dự định. khi sử dụng
h = History.new
h.strategy = :mystrategy, :backward
[:mystrategy, :backward]
được gán cho biến chiến lược và biến hướng vẫn :forward
.
Phần quan trọng là tôi muốn có thể gán giá trị chuẩn cho tham số hướng.
Bất kỳ manh mối nào để làm cho tác phẩm này được đánh giá cao.
Đã chỉnh sửa để thêm đề xuất khác để triển khai thay thế. – Phrogz
Tôi thích gợi ý nơi bạn kiểm tra xem giá trị có phải là một mảng hay không. Bạn nói một hack tổng thể của nó. Trường hợp sẽ sử dụng này gây ra rắc rối? – FlyingFoX
@FlyingFoX Đó là một "tổng hack" vì nó không phải là thành ngữ, không tự tài liệu, và không thường áp dụng (trong trường hợp ai đó có thể muốn vượt qua một mảng như tham số đầu tiên). – Phrogz