Gần đây tôi đã thảo luận về cú pháp của Ruby sau đây với một đồng nghiệp:nếu câu lệnh sau khi gán biến - mức độ phổ biến như thế nào?
value = if a == 0
"foo"
elsif a > 42
"bar"
else
"fizz"
end
Tôi chưa thấy loại này logic nhiều cá nhân, nhưng đồng nghiệp của tôi lưu ý rằng nó thực sự là một Rubyism khá phổ biến. Tôi đã cố gắng googling chủ đề và không tìm thấy bài viết, trang, hoặc SO câu hỏi thảo luận về nó, làm cho tôi tin rằng nó có thể là một kỹ thuật rất quan trọng của thực tế. Một đồng nghiệp khác, tuy nhiên, tìm thấy cú pháp khó hiểu và thay vào đó sẽ viết logic trên như thế này:
if a == 0
value = "foo"
elsif a > 42
value = "bar"
else
value = "fizz"
end
Những bất lợi đó là tuyên bố lặp đi lặp lại của value =
và sự mất mát của một ngầm else nil
, nếu chúng ta muốn sử dụng nó. Điều này cũng giống như nó liên kết với nhiều tính năng đường cú pháp khác được tìm thấy trong Ruby.
Câu hỏi của tôi là, mức độ phổ biến của kỹ thuật này trong Ruby? Có một số loại đồng thuận về việc liệu cộng đồng cảm thấy như thế này nên được sử dụng hoặc tránh?
Tôi muốn nói, nó khá thành ngữ. Tôi thường xuyên sử dụng nó. –
Lưu ý: đây không phải là câu lệnh 'if', đó là biểu thức' if' * *, chính xác là * tại sao * nó hoạt động ở vị trí đầu tiên. (Trong thực tế, không có câu lệnh nào trong Ruby, mọi thứ đều là một biểu thức và mọi thứ đều trả về một giá trị.) –
Nó tương tự như 'x = case (y); khi .... 'và' x = (y = 3)? 3: 1', phổ biến. –