Crystal How to check if the block argument is given inside the function

冷暖自知 提交于 2019-12-06 10:06:50

Such a check is impossible, because a method accepting a block (using yield anywhere) simply has a different signature. But that also means that you don't need the check, just make 2 methods like this:

# if you want to be explicit (makes no difference):
# def composition(text : String, k : Int32, &block)
def composition(text : String, k : Int32)
  (0 .. text.size - k).each do |i|
    yield text[i, k]
  end
end

def composition(text : String, k : Int32) : Array(String)
  kmers = [] of String
  composition(text, k) do |s|
    kmers << s
  end
  return kmers
end
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!