2009-09-15 11 views
6

Bất cứ ai cũng có một mẹo hay để nhớ cú pháp ternary chuẩn?Hãy nhớ Cú pháp của toán tử Ternary

Cụ thể là '?' hoặc ':' xuất hiện trước. Tôi đã liên tục nhận được điều này ngược trong những năm qua.

+5

không bao giờ nghĩ rằng có thể có được điều này lạc hậu ... –

+2

operatorName = isPedantic()? "có điều kiện": "ternary"; –

+5

Tại sao ghét trên câu hỏi này? Đó là một chút ánh sáng, nhưng ý tôi là, nó không giống như "Jon Skeet Facts" hay gì đó. – Chuck

Trả lời

21

Điều kiện bạn đang kiểm tra giống như một câu hỏi, vì vậy dấu chấm hỏi sẽ xuất hiện trước.

x > 0 ? 1 : 0 

Hãy suy nghĩ câu này là ba câu tiếng Anh: "Lớn hơn 0? Sau đó, 1. Khác, 0" Bạn có một câu cho mỗi mệnh đề trong câu lệnh.

Các vị:

x > 0 ? /* Is x greater than 0? */ 

Các "true" chi nhánh:

1 /* Then 1. */ 

Các "false" chi nhánh:

: 0 /* Else, 0. */ 
+1

Có một trường hợp đặc biệt gồm 42 câu trả lời xuất hiện trước câu hỏi. –

+0

cảm ơn, mẹo 'câu hỏi' sẽ hoạt động tốt cho tôi –

0

Nó đi như thế này:

myVariable = this.testMethod() ? 'value for true case' : 'value for false case' 
0

trong python Tôi đọc nó như là một câu tiếng Anh thông thường:

a equals b if condition is true else c 
+3

Tôi có đúng khi nghĩ rằng các cử tri chỉ ghen tị vì ngôn ngữ của họ được lựa chọn quá chậm chạp? – SilentGhost

+0

Có lẽ họ là (tôi không phải là một trong số họ bằng cách này), nhưng câu trả lời của bạn cũng không phải là đặc biệt hữu ích cho câu hỏi này. Không ai gặp khó khăn khi nhớ thứ tự của các từ khóa trong Python tương đương. Đó là một trong những điều tuyệt vời về Python. BDFL và cộng đồng chịu những nỗi đau như vậy để làm cho ngôn ngữ trở nên dễ chịu, dễ đọc và phù hợp nhất có thể. Nhưng biết nó không nhất thiết giúp bạn với các ngôn ngữ giống như C. –

+0

@A. Levy: với chính xác khuôn mặt thẳng thắn mà tôi có thể tuyên bố rằng không ai gặp khó khăn khi nhớ cú pháp kiểu C vì nó tự nhiên hơn để tạo ra "câu hỏi/có/không" thay vì "câu hỏi/không/có". – SilentGhost

9

Theo như ghi nhớ mà biểu tượng đến trước, tôi chỉ nghĩ đến một thực tế là phần đầu tiên là một câu hỏi: "Có đúng hay không? ", vì vậy dấu chấm hỏi đầu tiên.

tôi nghĩ về cú pháp theo cách này

Question ? Yes : No 
0

Hãy suy nghĩ về nó theo cách này: một tuyên bố ternary bao gồm ba phần: câu hỏi, mã để thực thi nếu câu trả lời cho câu hỏi là "có" và mã nếu câu trả lời là "không". Các "?" đến sau câu hỏi như trong câu tiếng Anh.

0

"?" là một dấu hỏi để nó có nghĩa là "nếu".

Dấu hai chấm có nghĩa là "hiện tại là", "sau đó thực hiện".

Điều tốt về toán tử bậc ba là bạn không bị buộc phải sử dụng nó, đặc biệt nếu bạn gặp sự cố khi nhớ cú pháp. Chỉ cần sử dụng câu lệnh if có thể đọc được nhiều lần nhất.

Và không - bộ ba không có hiệu suất tốt hơn sau đó là câu lệnh if.

+0

Tại sao -1? OP yêu cầu biết làm thế nào anh ta có thể nhớ cú pháp, đó là chính xác những gì tôi đã cố gắng giải thích. Có điều gì sai tôi đã nói không? – codymanix

-1

Nếu bạn là bài kiểm tra đơn vị vẫn vượt qua khi bạn làm sai, thì điều đó không quan trọng hoặc các bài kiểm tra của bạn không bao gồm đủ các đường dẫn thông qua mã. Nếu có một khoảng cách quá dài giữa việc gõ nó và nhận được một pass/fail từ các bài kiểm tra, đó là một vấn đề khác. Rất ít cú pháp cú pháp nhỏ trong sự hiện diện của các bài kiểm tra tốt, nhanh chóng.