Как мне проверить Truthy и Falsy в этом обобщенном методе ruby ​​для Reduce? - PullRequest
0 голосов
/ 25 сентября 2019

Это для курса рубина.Нас просят написать обобщенный метод для сокращения.

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

1 Ответ

0 голосов
/ 25 сентября 2019

Все значения в 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?

Условия «любое значение является ложным» и «присутствует истинное значение»оба могут быть легко выполнены, данный массив может просто содержать по одному из каждого.В этом случае какое условие должно иметь приоритет?

...