1
Пусть функция определяется следующим образом:Кристалл Как проверить, если блок задан аргумент внутри функции
def composition(text : String, k : Int32) : Array(String)
kmers = Array(String).new
(0 .. text.size - k).each do |i|
kmers << text[i, k]
yield text[i, k]
end
return kmers
end
Как проверить, если блок задан аргумент внутри функции? Если задан аргумент блока, то будут получены коэффициенты. Если не задано, то kmers будут возвращены как массив строк.
Это обрабатывает случай использования в OP, но есть еще вопрос о том, действительно ли возможно это определить, является ли или не был принят блок. Здесь? Я думаю, что нет, потому что вызов функции, ожидающей блока без блока, приводит к ошибке времени компиляции; поэтому нет возможности избежать исключения во время выполнения. –