2017-04-12 35 views
7

Như tiêu đề cho biết, tôi chỉ gặp một trường hợp nếu && (AND) và , cho cùng một kết quả trong Swift. Tôi đã thử nghiệm mã bên dưới:Có phải "&&" và "," giống với Swift không?

let a = 5 
let b = 6 

if a<6, b>0 { 
    print("should be true") 
} 

if a<6, b<0 { 
    print("should be false") 
} 

if a>6, b>0 { 
    print("should be false") 
} 

if a>6, b<0 { 
    print("should be false") 
} 

Nó chỉ ghi:

nên đúng

Vì vậy, hành vi của , là giống như &&, tôi thích hợp?

+0

Nó có vẻ đúng với câu lệnh 'if', nhưng bạn không thể viết mã như' return (a> 4, b <4) 'để hai số không giống nhau – XmasRights

+2

Thực tế nó hoạt động giống như một danh sách điều kiện * * sau 'guard', 'if let' và' guard let' – vadian

Trả lời

11

Chúng có thể được sử dụng trong các tình huống tương tự nhưng điều đó không có nghĩa là chúng giống hệt nhau.

xem xét:

if (a && b) || c 

bạn không thể viết

if (a, b) || c 

thậm chí a && b || c là khác nhau từ a, b || c.

if a, b là một cái gì đó giống như

if a { 
    if b { 
     ... 
    } 
} 

Cả hai biểu thức phải được đánh giá để true nhưng họ vẫn là hai biểu thức riêng biệt. Chúng ta không nên tưởng tượng && ở đó.

Tại sao chúng ta cần toán tử ,?

Toán tử là cần thiết để kết hợp ràng buộc tùy chọn với các điều kiện boolean, ví dụ:

if let a = a, a.isValid() { 

bởi vì && sẽ không giúp chúng tôi trong những trường hợp như vậy.

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