Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Thành Thạo Toán Tử Ba Ngõ (Ternary) Trong Ruby: Hướng Dẫn Nhanh Cho Logic Điều Kiện Gọn Nhẹ

Toán Tử Ba Ngõ Trong Ruby Là Gì?

Toán tử ba ngõ gồm ba phần, đó là nguồn gốc của từ "ternary". Các phần này bao gồm một câu lệnh điều kiện & hai kết quả có thể.

Nói cách khác, ternary cho bạn cách viết biểu thức if/else gọn gàng chỉ trong một dòng code.

Ví dụ:

 if apple_stock > 1
  :eat_apple
else
  :buy_apple
end 

Có thể trở thành:

 apple_stock > 1 ? :eat_apple : :buy_apple 

Nhờ toán tử ba ngõ!

Câu hỏi... Cái này hoạt động như thế nào chính xác & cú pháp đúng là gì? Hãy cùng tìm hiểu.

Khuôn Mẫu Viết Ternary Của Riêng Bạn

Nếu chúng ta tổng quát cú pháp cho toán tử ba ngõ, bạn nhận được một khuôn mẫu "điền vào chỗ trống".

Trông như sau:

 condition ? true : false 

Phần đầu tiên của ternary là điều kiện, tức điều kiện bạn muốn kiểm tra xem đúng hay sai.

Sau đó, chúng ta có dấu hỏi (?). Đó là một phần của cú pháp! Đó là cách Ruby biết bạn đang viết toán tử ba ngõ.

Tiếp theo: Chúng ta có code bạn muốn chạy nếu điều kiện ra true, kết quả đầu tiên có thể.

Sau đó là dấu hai chấm (:), một yếu tố cú pháp khác.

Cuối cùng, chúng ta có code bạn muốn chạy nếu điều kiện là false, kết quả thứ hai có thể.

Ví dụ:

 "chocolate".size > 4 ? "More than four characters" : "Less than four characters" 
  • Điều kiện => "chocolate".size > 4
  • Nếu True => "More than four characters"
  • Else => "Less than four characters"

Ba phần này là thành phần của mọi biểu thức ternary. Đừng quên ? giữa điều kiện & kết quả, ngay cả khi tên phương thức kết thúc bằng dấu hỏi.

Ví dụ:

 "".empty? ? "Yes" : "No" 

Đây là điều dễ bỏ qua, hãy chú ý khi viết loại code này.

Toán Tử Ba Ngõ Phức Tạp

Toán tử ba ngõ có thể dùng sai. Nó trở thành ý tưởng tồi khi bạn muốn làm điều phức tạp với nó.

Ví dụ: Bạn có thể gán kết quả biểu thức ternary cho biến.

 a = 10 > 5 ? "yes" : "no" 

Điều này ổn. Nhưng bắt đầu phức tạp khi kết quả có thể có khoảng trắng.

Ví dụ:

 10 > 5 ? (puts "yes") : (puts "no") 

Chúng ta phải dùng dấu ngoặc ở đây. Tại sao? Vì nếu không, bạn nhận được SyntaxError.

Những dấu ngoặc này làm code hơi khó hiểu, làm giảm lợi ích độ dễ đọc & phong cách của ternary. Hãy nhớ điều này khi quyết định dùng ternary hay không.

Toán Tử Ba Ngõ & Độ Ưu Tiên Toán Tử

Vấn đề khác xuất hiện với biểu thức ternary là độ ưu tiên toán tử.

Ví dụ:

 [].tap { |a| a << "ccccc".size == 0 ? "empty" : "not empty" } # [5] 

Tôi mong đợi "empty" hoặc "not empty", hai kết quả có thể cho ternary, nhưng nhận được 5.

Đang xảy ra gì? Ruby và hầu hết ngôn ngữ xử lý biểu thức với các mức ưu tiên khác nhau. Giống như nhân chia ưu tiên hơn cộng trừ trong số học, trong Ruby, lời gọi phương thức (<< & size) ưu tiên hơn toán tử ba ngõ, giải thích hành vi trên.

Bạn có thể giải quyết bằng dấu ngoặc:

 [].tap { |a| a << ("bbbbb".size == 0 ? "empty" : "not empty") } # ["not empty"] 

Điều khác cần nhớ khi viết ternary!

Video Hướng Dẫn

Tóm Tắt

Bạn đã học về toán tử điều kiện ba ngõ trong Ruby, cho phép viết câu lệnh điều kiện gọn gàng, có thể làm code dễ đọc hơn hoặc khó đọc hơn tùy tình huống.

Bây giờ đến lượt bạn! Hãy thực hành để cài đặt kiến thức này vào não bộ. Cảm ơn bạn đã đọc 🙂