Ruby:从块中产生块?

发布于 2024-08-08 16:38:36 字数 295 浏览 2 评论 0 原文

ruby 中的 lambdaprocmethod 或其他类型的块是否可以生成另一个块?
类似...

a = lambda {
  puts 'in a'
  yield if block_given?
}

a.call { puts "in a's block" }

这不起作用...它只是产生

in a
=> nil

有没有办法让块调用块?

Is it possible for a lambda, proc, method or other type of block in ruby, to yield to another block?
something like...

a = lambda {
  puts 'in a'
  yield if block_given?
}

a.call { puts "in a's block" }

this doesn't work... it just produces

in a
=> nil

Is there way to get the block to call a block?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痞味浪人 2024-08-15 16:38:36

我不确定你是否可以这样做,但类似的事情是:

In Ruby 1.8.6:

a = lambda { |my_proc|
  puts 'in a'
  my_proc.call
}

a.call(lambda { puts "in a's block" })

In Ruby 1.9.1, you can have blockparameters

a = lambda { |&block|
  puts 'in a'
  block.call
}

a.call { puts "in a's block" }

I'm not sure if you can you can do that, but something similar would be:

In Ruby 1.8.6:

a = lambda { |my_proc|
  puts 'in a'
  my_proc.call
}

a.call(lambda { puts "in a's block" })

In Ruby 1.9.1, you can have block parameters

a = lambda { |&block|
  puts 'in a'
  block.call
}

a.call { puts "in a's block" }
无人接听 2024-08-15 16:38:36

可以调用block,这和yieling类似。

a = lambda {|&block| block.call if block}
a.call {print "hello"}

请注意,

a.call

不会返回错误。

You can call the block, which is similar to yielding.

a = lambda {|&block| block.call if block}
a.call {print "hello"}

Note that

a.call

Will not return an error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文