gpt4 book ai didi

ruby - 何时使用隐式或显式代码块

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:36 25 4
gpt4 key购买 nike

我试图理解什么时候应该隐式或显式地编写代码块。给定以下代码块:

  • 隐式

    def two_times_implicit 
    return "No block" unless block_given?
    yield
    yield
    end

    puts two_times_implicit { print "Hello "}
    puts two_times_implicit
  • 明确

    def two_times_explicit (&i_am_a_block) 
    return "No block" if i_am_a_block.nil?
    i_am_a_block.call
    i_am_a_block.call
    end

    puts two_times_explicit { puts "Hello"}
    puts two_times_explicit

使用一种编码比另一种更可取吗?是否存在标准做法?是否存在其中一个比另一个工作得更好或不同以及一个根本不起作用的实例?

最佳答案

通过&接收 block 会在 block 外创建一个新的proc对象,所以从效率的角度来说,最好不要使用。但是,使用 & 通常可以更轻松地定义可能使用或不使用 block 的方法,并且使用 &,您还可以将 block 与参数一起处理,因此它是许多人的首选。

关于ruby - 何时使用隐式或显式代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720002/

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