Ruby Gán chuỗi True và False?
Bạn có thể gán chuỗi cho true và false không?
ví dụ: tôi đang bắt đầu với một hàm băm:
shopping_list = {
"milk" => false,
"eggs" => false,
"jalapenos" => true
}
puts "Here is your Shopping List:"
shopping_list.each do |key, value|
puts "#{key} - #{value}"
end
Tôi muốn đầu ra đặt "đã mua" cho truevà "không mua" cho false.
Trả lời
Sử dụng một inline if hoặc một ternary if operator:
shopping_list = {
"milk" => false,
"eggs" => false,
"jalapenos" => true
}
puts "Here is your Shopping List:"
shopping_list.each do |key, value|
puts "#{key} - #{if value then 'purchased' else 'not purchased' end}"
# or this:
# puts "#{key} - #{value ? 'purchased' : 'not purchased'}"
end
Bản in:
Here is your Shopping List:
milk - not purchased
eggs - not purchased
jalapenos - purchased
Toán tử nào để sử dụng: toán tử bậc ba ( ?:) hoặc if/then/else/end?
Tôi đã chọn ở đây if/then/else/end, nhưng liệt kê cả hai tùy chọn là chấp nhận được. Nó là một vấn đề của phong cách mà bạn chọn.
Một số người dùng Stack Overflow Ruby thích sử dụng thông thường if ... then ... else ... end. Nó dài hơn, nhưng rõ ràng hơn và mang tính thành ngữ hơn. Ví dụ, hãy xem những câu trả lời sau:
https://stackoverflow.com/a/2175392/967621
https://stackoverflow.com/a/4253250/967621
Những người dùng Stack Overflow khác thích hơn ?:, ngắn gọn và rõ ràng hơn, nếu bạn đã quen với nó. Cũng lưu ý rằng Hướng dẫn phong cách Ruby đồng ý:
Ưu tiên toán tử bậc ba (
?:) hơn cácif/then/else/endcấu trúc. Nó phổ biến hơn và rõ ràng là ngắn gọn hơn.
# bad
result = if some_condition then something else something_else end
# good
result = some_condition ? something : something_else
Điều này có trả lời câu hỏi của bạn không?
shopping_list.each do |key, value|
puts "#{key} - #{purchased?(value)}"
end
def purchased?(boolean)
boolean ? 'purchased' : 'not purchased'
end
Tôi muốn đầu ra đặt "đã mua" là đúng và "không được mua" là sai.
Bạn thường bắt đầu bằng một ifbiểu thức :
shopping_list.each do |key, value|
if value
puts "#{key} - purchased"
else
puts "#{key} - not purchased"
end
end
Sau đó, bạn có thể thử xóa các phần mã trùng lặp.
Bạn có thể gán chuỗi cho true và false không?
Điều đó nghe giống như một ánh xạ. Bạn có thể sử dụng một hàm băm khác:
states = {
true => 'purchased',
false => 'not purchased'
}
Và tham khảo mã băm đó khi in danh sách mua sắm của bạn:
shopping_list.each do |key, value|
puts "#{key} - #{states[value]}"
end
Tại đây, states[value]tìm nạp giá trị đầu ra cho valuetừ stateshàm băm.