ruby的方法和block

简介: 在ruby中方法与block的合用 :~/ruby$ irbirb(main):001:0> def take_block(p1)irb(main):002:1>   if block_given?irb(main):003:2>      yield(p1)irb(main):004:2>   ...

在ruby中方法与block的合用

:~/ruby$ irb
irb(main):001:0> def take_block(p1)
irb(main):002:1>   if block_given?
irb(main):003:2>      yield(p1)
irb(main):004:2>   else
irb(main):005:2*      p1
irb(main):006:2>   end
irb(main):007:1> end
=> nil
irb(main):008:0> take_block("no block")
=> "no block"
irb(main):009:0> take_block("no block") {|s| s.sub(/no /,'')}
=> "block"
irb(main):010:0>

 

下面是调用yield实现的简单迭代(回调)

irb(main):001:0> def three_times
irb(main):002:1>    yield
irb(main):003:1>    yield
irb(main):004:1>    yield
irb(main):005:1> end
=> nil
irb(main):006:0> three_times { puts "Hello"}
Hello
Hello
Hello
=> nil
irb(main):007:0>

 

注:

    Kernel.block_given?方法: 当某方法和block关联在一起时, Kernel.block_given?返回真,否则返回假





相关文章
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
Ruby 教程 之 Ruby 方法 2
Ruby return 语句
57 0
|
6月前
|
C语言 C++ Ruby
|
6月前
|
Ruby
Ruby 教程 之 Ruby 方法 3
可变数量的参数
63 1
|
1月前
|
应用服务中间件 Apache nginx
深入探索研究Ruby CGI方法
【10月更文挑战第2天】
31 4
|
2月前
|
应用服务中间件 Apache nginx
探索研究Ruby CGI方法
【9月更文挑战第2天】
46 4
|
3月前
|
开发者 测试技术 Android开发
Xamarin 开发者的五大常见问题及解决方案:从环境搭建到性能优化,全面解析高效跨平台应用开发的技巧与代码实例
【8月更文挑战第31天】Xamarin 开发者常遇问题及解决方案覆盖环境搭建至应用发布全流程,助新手克服技术难关。首先需正确安装配置 Visual Studio 及 Xamarin 支持,设置 iOS/Android 测试环境。利用 Xamarin.Forms 和 XAML 实现高效跨平台开发,共享 UI 和业务逻辑代码。针对性能优化,采取减少 UI 更新、缓存计算结果等措施,复杂问题则借助 Xamarin Profiler 分析。
49 0