Я пытаюсь воссоздать метод count
Enumerable, как указано в «Projects: Advanced Building Blocks».Как восстановить метод подсчета Enumerable?
Определение в документации Ruby, является то, что count
«Возвращает количество элементов в перечислении через перечисление. Если аргумент задан, то число элементов в перечислении, которые равны п подсчитываются. Если задан блок, он подсчитывает количество элементов, дающих истинное значение ».
Что именно является аргументом по умолчанию?
Так я подошел к этому до сих пор выглядит следующим образом: параметр имеет значение, если аргумент не передается так:
случай, когда я не является строкой:
когда аргумент заданный и заданный блок (например,
[1,2,3].count(3) { |x| x == 3 }
): возвращает предупреждение и счет аргумента., когда аргумент задан и нет блока (например,
[1,2,3].count(3)
): возвращает кол-во аргументов., когда нет аргументов и нет блока (например,
[1,2,3].count
): возвращает размер экземпляра.еще (аргумент не дал и блок задан) (например,
[1,2,3].count { |x| x == 3 }
:. возвращает количество на основе спецификаций, приведенных в блоке
два вопроса, у меня есть, в основном:.
- Что такое аргумент по умолчанию для подсчета?
- Какая глобальная переменная используется при предупреждении?
Вот мой код:
Начиная с Ruby 1.9, Enumerable не смешивается классом String, поэтому вы можете предположить, что приемник не является строкой. Не существует аргумента по умолчанию. Существует переменное количество аргументов: ноль или один. Вы хотите 'def my_count (* args)', а затем проверить 'args.size', который может быть равен нулю, один или несколько. (Если более одного, вы можете создать исключение 'ArgumentError'). –