Cốt truyện dài, tôi đã viết một phương thức bao gồm một đối số tùy chọn, sẽ thực hiện một số thứ nếu giá trị cho khóa: nếu được đánh giá là đúng. Khi tôi cố gắng băm trong IRB sử dụng cú pháp mới tôi nhận được một lỗi cú pháp trong IRB, việc nghỉ nhanh chóng mở:IRB - Cú pháp băm Ruby 1.9.x: {if: true} không bằng {: if => true}
1.9.3p374 :010 > {if: true}
1.9.3p374 :011?>
Sử dụng cú pháp cũ, làm việc tốt:
1.9.3p374 :011 > {:if => true}
=> {:if=>true}
Tất cả từ khóa bắt đầu một tuyên bố, thể hiện hành vi tương tự. Ví dụ. def
, do
, module
, case
từ dành riêng khác xảy ra ở giữa và class
chỉ làm việc tốt: else
, end
Câu hỏi của tôi là: Liệu hành vi này được mong đợi, một lỗi hoặc một giới hạn?
'irb' hơi mỏng manh và có tổn thương não khá lớn, có thể bạn sẽ thấy một số điều đó. –
@muistooshort có vẻ khá vô căn cứ. 'echo 'đặt {if: true} .inspect'> test.rb; ruby test.rb' trả về: 'test.rb: 1: lỗi cú pháp, bất ngờ ':'' Trong thời trang nào là 'irb' mong manh? – nzifnab
@nzifnab Irb phải dừng thực hiện câu lệnh cho đến khi 'kết thúc', và nếu nó diễn giải sai một toán tử điều khiển (như ở đây) thì có thêm các vấn đề khác. – coreyward