Crystal tut 2: Cấu trúc điều kiện if
Series bài hướng dẫn cơ bản về học ngôn ngữ lập trình Crystal. Cấu trúc điều kiện trong Crystal - if
Crystal cấu trúc điều kiện if
Cú pháp if trong Crystal rất đơn giản:
if some_condition
do_something
elsif some_other_condition
do_something_else
else
do_that
end
Sau đây là đoạn chương trình cho phép người dùng nhập vào 1 số nguyên, sau đó kiểm tra và in ra giá trị nhập vào có nằm trong đoạn [-5, 10] hay không.
if_simple.cr
print "Enter an interger: "
num = gets.not_nil!
# convert string to integer
num = num.to_i(strict: false) # num1 = num1.to_i <-- you should try this :)
if num > 10
p num.to_s + " > 10"
elsif num < -5
p num.to_s + " < -5"
else
p "-5 <= " + num.to_s + " <= 10"
end
Kết quả thực thi:
$ crystal run if_simple.cr
Enter an interger: 2
"-5 <= 2 <= 10"
Crystal điều kiện if
trong phép gán
Crystal hỗ trợ phép "? :" giống như trong C/C++ (ternary).
Sau đây là chương trình có chức năng kiểm tra đoạn giá trị của số nguyên do người dùng nhập vào và sau đó tính căn bậc 2 nếu số nguyên đó lớn hơn 0.
if_ternary.cr
print "Enter an interger: "
num = gets.not_nil!
# convert string to integer
num = num.to_i(strict: false) # num1 = num1.to_i <-- you should try this :)
result = if num > 10
num.to_s + " > 10"
elsif num < -5
num.to_s + " < -5"
else
"-5 <= " + num.to_s + " <= 10"
end
p result
# --
if (sq = Math.sqrt(num) if num > 0)
p "sqrt(" + num.to_s + ") = " + sq.to_s
end
# ternary
if (sq_ternary = num > 0 ? Math.sqrt(num) : nil)
p "[Ternary] sqrt(" + num.to_s + ") = " + sq_ternary.to_s
end
- Biến result được gán giá trị tùy điều kiện biến num do người dùng nhập vào.
- Câu lệnh
sq = Math.sqrt(num) if num > 0
không có else, nghĩa là sq sẽ được gán là giá trị nil nếu điều kiện không thỏa, tức num <= 0. - Ternary operator được áp dụng:
sq_ternary = num > 0 ? Math.sqrt(num) : nil
- Câu lệnh
if tên_biến
nghĩa là biến đó phải khác nil và false thì mới là thỏa điều kiện.
Crystal điều kiện unless
- Phủ định trong Crystal ta dùng ký tự
!
trước tên biến. - Ngoài ra câu lệnh
unless
tương đươngif !tên_biến
. - 3 điều kiện rẽ nhánh trong ví dụ sau là tương đương nhau.
Ví dụ:
x = true
if x
p "x is true"
else
p "x is false"
end
if !x
p "x is false"
else
p "x is true"
end
unless x
p "x is false"
else
p "x is true"
end
Tất cả script Crystal của các tutorial mình sẽ tổng hợp trên Github tại đường dẫn sau:
https://github.com/minhng92/crystal-examples
Crystal Tutorials: