Crystal How to check if the block argument is given inside the function
Suppose a function defined like this: 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 How do I check if the block argument is given inside the function? If the block argument is given, kmers will be yielded. If not given, kmers will be returned as an array of strings. 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: #