2012-04-04 33 views
88

Trích dẫn RIP Hash rocket post dường như ngụ ý cú pháp Hash Rocket (:foo => "bar") không còn được dùng để hỗ trợ mã băm JSON mới-Ruby (foo: "bar"), nhưng tôi không thể tìm thấy bất kỳ tham chiếu dứt khoát nào nói về Hash Rocket biểu mẫu thực sự bị phản đối/không được đề cập như của Ruby 1.9.Hash Rocket có bị phản đối không?

+0

Tôi nghĩ rằng anh chàng đó chỉ sử dụng Ruby với Rails. –

Trả lời

119

Tác giả của bài đăng trên blog đó quá kịch tính và ngu xuẩn, =>stillquitenecessary. Cụ thể:

  1. Bạn phải sử dụng tên lửa cho các ký hiệu yêu cầu trích dẫn: :'where.is' => x hợp lệ nhưng thì không. Ruby 2.2 đã khắc phục sự cố này để bạn có thể nói trong Ruby 2.2+.
  2. Bạn phải sử dụng tên lửa cho các ký hiệu không phải là nhãn hợp lệ: :$set => x hợp lệ nhưng $set: x thì không. Trong Ruby 2.2+ bạn có thể giải quyết vấn đề này với các dấu ngoặc kép: '$set': x sẽ làm điều đúng.
  3. Bạn phải sử dụng tên lửa nếu bạn sử dụng các phím trong Hashes không phải là ký hiệu: 's' => x là hợp lệ nhưng 's': x là một thứ hoàn toàn khác.

Bạn có thể kludge quanh ở trên theo cách thức rõ ràng tất nhiên:

h = { } 
h[:'where.is'] = 'pancakes house?' 
# etc. 

nhưng đó chỉ là xấu xí và không cần thiết.

Tên lửa sẽ không xuất hiện ở đâu mà không làm tê liệt Hashes của Ruby.

+4

s/quá kịch tính và ngu ngốc/kịch tính và ủng hộ với sự kính trọng hùng hồn /. Phần còn lại của các điểm của bạn đứng. – dbenhur

+0

Tôi đồng ý, đó chắc chắn là một trong những bài đăng hùng hồn nhất về cập nhật ngôn ngữ. Mặc dù một chút sai lầm: D. – mahemoff

+13

Bạn phải tự hỏi nếu sử dụng cú pháp mới, khi bạn vẫn cần phải dựa vào cú pháp cũ cho các tình huống nhất định, sẽ đơn giản làm phức tạp mã của chúng tôi. –

Các vấn đề liên quan