sách gpt4 ăn đã đi

ruby - 在参数为 `yield self` 的方法中使用 `&block` 和在没有参数 `yield self` 的方法中使用 `&block` 有什么区别吗?

In lại 作者:数据小太阳 更新时间:2023-10-29 07:12:37 26 4
mua khóa gpt4 giày nike

我明白了

def a(&block)
block.call(self)
kết thúc

def a()
yield self
kết thúc

导致相同的结果,如果我假设有这样一个 block a {}。我的问题是 - 因为我偶然发现了一些这样的代码,它是否有任何区别或者是否有任何优势(如果我不使用变量/引用 block ):

def a(&block)
yield self
kết thúc

这是一个我不理解&block用法的具体案例:

def rule(code, name, &block)
@rules = [] if @rules.nil?
@rules << Rule.new(code, name)
yield self
kết thúc

câu trả lời hay nhất

我能想到的唯一优点就是自省(introspection):

def foo; end
def bar(&blk); end

method(:foo).parameters #=> []
method(:bar).parameters #=> [[:block, :blk]]

IDE 和文档生成器可以利用这一点。但是,它不影响 Ruby 的参数传递。调用方法时,无论是声明还是调用,都可以传递或省略 block 。

关于ruby - 在参数为 `yield self` 的方法中使用 `&block` 和在没有参数 `yield self` 的方法中使用 `&block` 有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43391176/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress