这是针对红宝石课程的。 我们被要求写一个概括的 减少的方法。
def my_own_reduce(array, starting_point = 0)
final_total = array.reduce(starting_point) { |sum, num| sum + num}
end
以下是我收到的错误消息:
# my own reduce returns a running total when given a starting point
# my own reduce returns true when all values are truthy
# my own reduce returns false when any value is false
# my own reduce returns true when a truthy value is present
# my own reduce returns false when no truthy value is present
Ruby 中的所有值都是真实的,除了nil
和false
。
如果要根据其真实性将非布尔对象转换为布尔对象,可以使用"双爆炸"运算符,如以下示例所示:
some_value = 42
some_other_value = 0
yet_another_value = nil
puts !!some_value # => true
puts !!some_other_value # => true
puts !!yet_another_value # => false
要在条件下使用对象的真实性,您可以像使用布尔值一样简单地使用它们。这样:
def my_method(my_argument)
if my_argument
'Received a truthy argument'
else
'Received a falsy argument'
end
end
puts my_method(0) # => 'Received a truthy argument'
puts my_method(nil) # => 'Received a falsy argument'
puts my_method(false) # => 'Received a falsy argument'
我希望这有所帮助,但是如果没有关于您问题上下文的更多信息,我不确定我是否可以告诉您更多。您发布的错误消息不仅有点不清楚,甚至相互矛盾。
条件"给定起点时"是否表示默认值 0 以外的起点?
">任何值都是假的"和"存在真值"的条件都可以很容易地满足,给定的数组可以简单地包含其中之一。在这种情况下,哪个条件应优先?