2012-11-06 30 views
6

Tôi không phải là người nói tiếng Anh bản địa. Tôi biết nó nghe có vẻ ngu ngốc. Tôi viết bằng Python & C. Nhưng tôi không thể hiểu rõ cách hoạt động của unless.Không thể hiểu từ khóa "trừ khi" trong Ruby

Bạn có thể suy nghĩ về khái niệm này từ quan điểm hợp lý không? Ví dụ: xem xét từ khóa if: if condition. Nếu condition là đúng, mã sẽ chạy. Giải thích hợp lý cho unless là gì?

Có cách nào khác để nghĩ về nó không?

Trả lời

6

của Ruby trừ modifier:

Cú pháp: Mã trừ khi có điều kiện

Thực thi mã nếu có điều kiện là sai.

Ví dụ:

$var = 1 
print "1 -- Value is set\n" if $var 
print "2 -- Value is set\n" unless $var 

$var = false 
print "3 -- Value is set\n" unless $var 

này kết quả sẽ sản xuất sau:

1 - Giá trị được thiết lập

3 - Giá trị được thiết lập

8

Cách đơn giản nhất là: unless nằm đối diện với if. Nó hoạt động ở các vị trí tương tự (tôi nghĩ) như if:

foo = nil 
puts "This will not show" if foo 
puts "But this will" unless foo 

if foo then 
    puts "This will not show" 
end 
unless foo 
    puts "But this will" 
end 

nó trông đẹp hơn trong mã nếu bạn viết unless foo thay vì if !foo - nhưng đó chỉ là ý kiến ​​của tôi. Trong biểu mẫu dài hơn, bạn thậm chí có thể sử dụng else, nhưng vui lòng, không.

Đây là set of rules to follow to make the code more readable.

23

unless x tương đương với if !x

-1

Dưới đây là một số khác gợi ý những gì làm cho tôi hạnh phúc với unless trong ruby:

Thứ nhất, trong tình huống mà tôi mong đợi điều kiện là sai, và mã thông thường sẽ chạy , tôi sử dụng unless:

unless name.empty? 
    puts "Hello #{name}" 
end 

thứ hai, bất cứ khi nào tôi mong đợi điều kiện là đúng, và mã sẽ không bình thường chạy, tôi sử dụng if not:

if not name == 'Awesome_Coder' 
    message.puts "Unauthorized!" 
end 
1

đói = true

trừ khi đói

đặt "Tôi đang viết chương trình Ruby!"

else

đặt "Thời gian để ăn!"

cuối

Đây là cách dễ dàng để hiểu

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