gpt4 book ai didi

crystal-lang - Crystal 如何检查 block 参数是否在函数内部给出

转载 作者:行者123 更新时间:2023-12-01 08:51:55 24 4
gpt4 key购买 nike

假设一个函数定义如下:

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。如果没有给出,kmers 将作为字符串数组返回。

最佳答案

这种检查是不可能的,因为接受块的方法(在任何地方使用 yield)只是具有不同的签名。但这也意味着您不需要检查,只需创建 2 个这样的方法:

# 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

关于crystal-lang - Crystal 如何检查 block 参数是否在函数内部给出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39190854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com