rubyx/lib/ruby/logical_statement.rb

25 lines
744 B
Ruby

module Ruby
# Logical Statements are guaranteed to return boolean
# either :and or :or, which may be written as && and ||
#
# Also they guarantee that the right expression does not get evaluated
# if the whole expression fails on the left expression.
# ie: false && non_existant_method
# will never call the non_existant_method , but instead evaluate to false
#
# Sol has no concept of this, so the Statement is expanded into the if
# that it really is
class LogicalStatement < Statement
attr_reader :name , :left , :right
def initialize(name , left , right)
@name , @left , @right = name , left , right
end
def to_s(depth = 0)
at_depth(depth , "#{left} #{name} #{right}")
end
end
end