gpt4 book ai didi

crystal-lang - 范围变量/守卫

转载 作者:行者123 更新时间:2023-12-04 13:08:18 28 4
gpt4 key购买 nike

是否有可能保证在范围退出时完成的变量。

具体来说,我想要一个守卫:在初始化时调用特定函数,并在作用域退出时调用另一个特定函数的东西。

最佳答案

这最好明确地完成:

class Guard
def initialize
# Init things here
end

def close
# clean up things here
end
end

def my_method
guard = Guard.new
# do things here
ensure
guard.close
end

然后一个常见的模式是使用 yielding 方法提供一个更好的接口(interface)。在使用外部资源时,您会注意到在标准库中经常看到这样的内容:

class Guard
def self.obtain
guard = new
yield guard
ensure
guard.close
end

# ...
end

Guard.obtain do |guard|
# do things
end

当然,如果消费者不应该与它交互,则产生实际的资源对象是可选的。

关于crystal-lang - 范围变量/守卫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68329026/

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