Ai đó có thể giúp tôi rút ngắn phương pháp sau không? Tôi bắt đầu với điều này, mà tôi thích tốt:Bao gồm có điều kiện của cặp khóa-giá trị trong một băm
def self.some_hash
{ "foo" => "bar" }
end
Bây giờ tôi muốn thêm một khóa tùy chọn. Cú pháp tersest tôi có thể nghĩ là thế này:
def self.some_hash(some_key=nil)
answer = { "foo" => "bar" }
answer[some_key] = "yucky, long-winded syntax" if some_key
answer
end
Phương pháp điều chỉnh hoạt động, nhưng tôi không hài lòng với sự lãng phí mực ảo. Có cách nào để rút ngắn nó không? Tôi nhận ra người ta có thể sử dụng một toán tử bậc ba trên băm chữ, nhưng điều đó sẽ buộc (tôi nghĩ) sự lặp lại cặp "foo" => "bar"
trên mỗi nhánh của điều kiện, mà cũng hơi kém hơn nguyên sơ.
"giúp tôi rút ngắn phương pháp sau" là tặng rằng điều này nên ở trên codereview.stackexchange.com, nơi họ thực hiện các đánh giá và trợ giúp với việc tái cấu trúc và tối ưu hóa. –
Rất tiếc khi thấy câu hỏi này bị đóng, khi nó thực sự hỏi, "Làm thế nào để tôi có điều kiện bao gồm cặp khóa/giá trị trong một băm?". Tôi đã viết một câu trả lời ở nơi khác bằng cách sử dụng [toán tử double-splat của Ruby 2.0] (http://stackoverflow.com/a/37474217/122087). –
@PaulAJungwirth, tôi đoán nó đã bị đóng vì tôi chỉ muốn cải thiện mã làm việc. Tôi có thể đã tạo ra một số cú pháp rác và sau đó nói rằng nó không hoạt động, và tất cả sẽ tốt trong SO. Đó là một mẹo tuyệt vời về toán tử **! Cảm ơn <--- nản lòng 'cảm ơn trong một bình luận là một cái câm, chuẩn mực xung quanh đây, nhưng -> CẢM ƠN! – danh