Прежде всего, вот ответы на практические задачи из части 1:

# Practice Problems
# Write a method that returns true if the first input
# is larger than the second input. Otherwise, false.
def first_larger_than_second?(a,b)
  a > b
end
puts first_larger_than_second?(5,3) == true
puts first_larger_than_second?(3,5) == false
puts first_larger_than_second?(5,5) == false
# Write a method that returns true if the first input
# equals the second input.
def first_equals_second?(a,b)
  a == b
end
puts first_equals_second?(5,3) == false
puts first_equals_second?(3,5) == false
puts first_equals_second?(5,5) == true
# BONUS
# Write a method that combines two strings into one.
def combine_strings(a,b)
  a + b
end
puts combine_strings("cat", "dog") == "catdog"
puts combine_strings("123", "456") == "123456"

Подожди, какого черта? Как мы просто добавили две строки в бонусный вопрос? Это называется конкатенацией строк. Как упоминалось в разделе о строках части 1, Ruby может добавлять числа и строки.

Теперь, что касается сегодняшних тем, мы рассмотрим логические, условные, истинные и ложные. Как всегда, рекомендую подписаться на https://replit.com/languages/ruby.

Булевы значения

Мы коснулись их в части 1. Есть два логических значения: true или false. Они обычно используются с различными операторами, такими как && (логическое «и»), || (логическое «или») и ! (логическое «отрицание»). && возвращает true только в том случае, если обе стороны верны, иначе false . || возвращает true, если одна из сторон равна true, иначе false. ! меняет значение на противоположное. Давайте рассмотрим несколько примеров:

i_am_human = true
i_wrote_this_post = true
i_can_fly = false
puts i_am_human && i_wrote_this_post # true. Both statements are true.
puts i_am_human && i_can_fly # false. Only one statement is true.
puts i_am_human || i_can_fly # true. At least one statement is true.
puts !i_can_fly # true. By the miracle of `!`, I can now fly.

Условные

Классическое заявление if. Теперь мы можем применить наши знания из раздела логических значений! Когда условие в if оценивается как true, выполняется тело оператора if. В противном случае он перейдет к else .

if i_am_human
  puts "yay we are human!" # since i_am_human was previously defined as true, this line will run.
else
  puts "yay we are dancers!" # this line will not run.
end
# Shorthand conditional
puts "hello world" if true

Правда и Фальси

Итак, вам не всегда нужно придавать условному оператору логическое значение. Вы можете дать ему ЛЮБОЙ объект Ruby! Каждый объект Ruby неявно рассматривается как логическое значение. Для простоты каждый объект является истинным (или оценивается как true в условных выражениях), за исключением nil и false , которые называются ложными.

my_cat = "Loco"
if my_cat
  puts "Somebody pet that cat!!" # This line is executed because "Loco" is truthy.
else
  puts "Nothing to see here"
end

Заключение

Условные выражения имеют решающее значение для самых основных задач программирования. Имея эти знания в своем наборе инструментов, вы теперь можете писать более сложный код. А пока давайте проверим ваши знания. Увидимся в следующий раз!

# Practice Problems
# Write a method to determine if "a" is between "b" and "c". 
# Assuming: "b" is always less than "c"
def is_between?(a,b,c)
end
is_between?(1,2,3) == false
is_between?(1,0,3) == true
is_between?(1,1,1) == false
# Write a method that returns true if the input is truthy. Else, false.
def is_truthy?(a)
end
is_truthy?(5) == true
is_truthy?("5") == true
is_truthy?(nil) == false
is_truthy?(false) == false
# BONUS
# What will this return? Try to figure it out without running it on your machine. Why did it evaluate this way?
puts "A" && true || false