Toán tử ba ngôi
Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 40 trên 56.
Toán tử ba ngôi là cách viết tắt trên một dòng của câu lệnh if/else, trả về một giá trị. Cú pháp là condition ? value_if_true : value_if_false.
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"
puts status # EligibleCách này giống như viết:
status = if age >= 18
"Eligible"
else
"Not Eligible"
endDùng toán tử ba ngôi khi cả hai nhánh đều trả về giá trị ngắn. Nếu một trong hai nhánh cần nhiều hơn một biểu thức, hãy dùng câu lệnh if/else thông thường: nhồi quá nhiều thứ vào toán tử ba ngôi sẽ khiến code khó đọc.
Bạn có thể dùng trực tiếp bên trong các biểu thức khác, bao gồm cả phép nội suy:
count = 1
puts "#{count} item#{count == 1 ? "" : "s"}" # 1 món
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 mónThử thách
DễĐọc một số nguyên n từ đầu vào. Dùng toán tử ba ngôi (không dùng khối lệnh if/else), in chính xác:
<n> is <label>trong đó label là:
positivekhin > 0negativekhin < 0zerokhin == 0
Gợi ý: dùng toán tử ba ngôi lồng nhau, condition ? a : (other_condition ? b : c).
Với đầu vào 5, đầu ra là 5 is positive. Với 0, đầu ra là 0 is zero.
Tự làm thử
n = gets.to_i
# TODO: dùng biểu thức ba ngôi (ternary expression) để tạo nhãn, sau đó dùng puts
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng xử lý
1Tìm hiểu sâu về chuỗi
Tổng quan về phương thức chuỗiNội suy chuỗiDuyệt qua chuỗiTách và nối chuỗiÔn tập: Đan chuỗi4Khối lệnh, Proc và lambda
Khối lệnh là gì?do..end và dấu ngoặc nhọnTừ khóa yieldTham số của khối lệnhProc và lambdaÔn tập: bộ lặp tùy chỉnh7Hash, phần 2
Hash.new với giá trị mặc địnhLặp qua HashHash lồng nhauGộp và chuyển đổiÔn tập: Bộ đếm tần suất10Dự án: Hồ sơ học sinh
Tổng quan dự ánThêm học sinh2Phạm vi
Phạm vi là gì?Các phương thức của phạm viPhạm vi trong case / whenÔn tập: luyện tập với phạm vi5Sức mạnh của Enumerable
select và rejectNối chuỗi mapreduce / injectcount, all?, any?, none?group_by và partitionsort_by, min_by, max_byÔn tập: quy trình dữ liệu8Ra quyết định nâng cao
Trường hợp với lớp và Regexwhen với nhiều giá trịToán tử ba ngôiif / unless nội tuyếnÔn tập: bộ phân loại điểmTự luyện tập: Trình biên dịch Ruby online