Tôi hiểu theo cách thông thường để viết một "nếu - else if" tuyên bố như sau:nếu - else if - else statement và khung
if (2==1) {
print("1")
} else if (2==2) {
print("2")
} else {
print("3")
}
hoặc
if (2==1) {print("1")
} else if (2==2) {print("2")
} else print("3")
Ngược lại, Nếu tôi viết theo cách này
if (2==1) {
print("1")
}
else if (2==2) {
print("2")
}
else (print("3"))
hoặc theo cách này:
if (2==1) print("1")
else if (2==2) print("2")
else print("3")
tuyên bố KHÔNG hoạt động. Bạn có thể giải thích cho tôi lý do tại sao }
và else
hoặc else if
phải nằm trong cùng một dòng không? Có cách nào khác để viết câu lệnh if-else if-else trong R, đặc biệt là không có dấu ngoặc?
Khi ban đầu 'if' được theo sau bởi một biểu thức hợp chất (được chỉ ra bởi' {} 'cặp) theo mặc định, trình phân tích cú pháp sẽ mong đợi biểu thức được theo sau bởi 'else' khác. Việc sử dụng 'else' được định nghĩa duy nhất là với các biểu thức phức. Điều này thậm chí được ghi trong tài liệu: 'if (cond) cons.expr else alt.expr' trong đó' cons.expr' và 'alt.expr' được định nghĩa là hợp chất. Như @Berry đã chỉ ra, bạn có thể sử dụng cách R phân tích các định nghĩa hàm để làm việc xung quanh việc này, nhưng tốt hơn là nên nhất quán trong việc sử dụng khung (IMO). – hrbrmstr
cũng nếu bạn bọc bất thường if-else trong ngoặc '{bad if-else expr}' hoặc trong một hàm phổ biến hơn 'function() {bad if-else expr}', nó sẽ hoạt động – rawr
Có thể trùng lặp của [ Bất ngờ 'else' trong lỗi "else"] (http://stackoverflow.com/questions/14865435/unexpected-else-in-else-error) –