如何在这个广义红宝石方法中测试真实和虚假的归约?



这是针对红宝石课程的。 我们被要求写一个概括的 减少的方法。

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 中的所有值都是真实的,除了nilfalse

如果要根据其真实性将非布尔对象转换为布尔对象,可以使用"双爆炸"运算符,如以下示例所示:

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 以外的起点?

">

任何值都是假的"和"存在真值"的条件都可以很容易地满足,给定的数组可以简单地包含其中之一。在这种情况下,哪个条件应优先?

最新更新