Pattern Matching
Guard Clauses
Pattern branches can add an if guard for extra checks.
Guard Clauses
guard_clauses.rb
score =
record = { name: "Ada", score: score }
case record
in { name: name, score: value } if value >= 80
label = "#{name}:great"
in { name: name, score: value } if value >= 60
label = "#{name}:pass"
else
label = "review"
end
puts "score=#{score}"
puts "label=#{label}"
score =
record = { name: "Ada", score: score }
case record
in { name: name, score: value } if value >= 80
label = "#{name}:great"
in { name: name, score: value } if value >= 60
label = "#{name}:pass"
else
label = "review"
end
puts "score=#{score}"
puts "label=#{label}"
score =
record = { name: "Ada", score: score }
case record
in { name: name, score: value } if value >= 80
label = "#{name}:great"
in { name: name, score: value } if value >= 60
label = "#{name}:pass"
else
label = "review"
end
puts "score=#{score}"
puts "label=#{label}"
pattern guard
A guard runs after a pattern matches and can decide whether that branch should be used.