Tại sao tính năng này không hoạt động?Tại sao "trường hợp" không có "khi> 2" hoạt động?
case ARGV.length
when 0
abort "Error 1"
when > 2
abort "Error 2"
end
Tại sao tính năng này không hoạt động?Tại sao "trường hợp" không có "khi> 2" hoạt động?
case ARGV.length
when 0
abort "Error 1"
when > 2
abort "Error 2"
end
Một tuyên bố if
có lẽ sẽ phù hợp hơn cho mã của bạn, vì bạn không có một phạm vi/giá trị dứt khoát, nhưng thay vì chỉ là một lớn hơn-hơn:
if ARGV.length == 0
abort "Error 1"
elsif ARGV.length > 2
abort "Error 2"
end
Vâng, nó không hoạt động vì nó không phải là cú pháp ruby hợp lệ. Tuy nhiên, bạn có thể làm điều này:
x = 15
case x
when 0..9 then puts "good"
when 10..12 then puts "better"
when 13..200 then puts "best"
else
puts "either great or poor"
end
Cú pháp ruby không hợp lệ.
gì bạn cần là
case
when ARGV.length == 0
abort "Error 1"
when ARGV.length > 2
abort "Error 2"
end
Khi bạn viết case x
, một phần quan trọng bạn cần phải hiểu là ruby có x và sau đó áp dụng một so với đối số hoặc biểu thức mà bạn chèn trong mệnh đề when
.
Dòng nơi bạn nói when x >2
đọc để ruby như:
if ARGV.length == > 2
Khi bạn loại bỏ một đối tượng cụ thể từ case
báo cáo, bạn có thể áp dụng điều kiện trong when
báo cáo.
Ruby 1.8.7 + irb 0.9.5 báo cáo (irb): 4: lỗi cú pháp, bất ngờ '>' với tập lệnh gốc của OP. Câu trả lời của tôi bao gồm một bộ chỉ dẫn viết lại đang hoạt động. –
Tôi đã thử nó trong một tập tin .rb, nó sẽ hiển thị một lỗi cú pháp sau đó. * & ^^% &^IRB. – Zabba
Trên thực tế những gì gây phiền nhiễu ở đây là tôi không thể tìm thấy tài liệu dứt khoát để hỗ trợ khiếu nại của tôi, tôi chỉ xảy ra * biết * câu trả lời. rubyspec.org và ruby-doc.org không hữu ích. Các thông số cú pháp ngôn ngữ tôi có thể tìm thấy dường như không bao gồm trường hợp này. –
Sử dụng 1.0/0.0
để có được vô cực, mà sửa chữa đang @ mosch của:
case ARGV.length
when 0
raise "Too few"
when 3..(1.0/0.0)
raise "Too many"
end
Bạn không cần phải là Chuck Norris chia bởi một dấu chấm động không.
Thay vì '(1.0/0.0)' chúng ta có thể sử dụng 'Float :: INFINITY', được thêm vào ruby 1.9.3. –
Tôi làm cách nào để sửa mã cụ thể của mình? Cảm ơn. – emurad
Yours là câu trả lời duy nhất có ý nghĩa với tôi - thật sự thành ngữ và thanh lịch. Đó là những gì tôi đã sử dụng là tốt. –