zoukankan      html  css  js  c++  java
  • ruby代码块

    #代码块是Proc 类的实例
    #使用如下:
    def run
      puts "start running"
      yield
      yield
      puts "finish"
    end
    
    run{ puts "runing" }    #当代码块在一行能容纳的时候 ,一般用花括号包围
    
    i=0
    run do    #当代码块语句多行的时候
      i += 1
      puts i
    end
    
    
    #代码块也能传参数
    def run2(arg)
      yield arg
    end
    
    run2 ("cai") {|name| puts "hello #{name}"}
    i=0
    run2 2 do |x|
      i = i+x
      puts i
    end
    
    #代码块的运用测试
    #运用代码块实现数组each 的迭代功能
    puts "====== 运用代码块实现迭代 ===="
    class Array    #给数组追加方法 for_each
     def for_each
       for i in (0...self.length)
         yield self[i]    #循环调用代码块来进行迭代
       end
     end
    end
    
    ["a","b","c"].for_each{ |i| puts i}
    
    
    #运用Proc 类来生成代码块
    block = Proc.new{ |name| puts "hello #{name}"}
    def method(name,&block)
       block.call name
    end
    method ("cai",&block)
    
    #Proc 与 lambda 
    def proc_test
      f = Proc.new{ return "jump from Proc block" }
      f.call
      return "proc_test return" #不会执行
    end
    
    def lambda_test
      f = lambda { return "jump from lambda block" }
      f.call
      return "lambda_test return"  #会执行
    end
    
    puts proc_test
    puts lambda_test
  • 相关阅读:
    cv2.matchTemplate图片匹配
    pytorch 安装坑
    滑动轨迹函数记录
    selenium chrome开发者
    tp5 json()与json_encode()
    where 查询
    tp5.1 Class not found
    978. Longest Turbulent Subarray
    1004. Max Consecutive Ones III
    424. Longest Repeating Character Replacement
  • 原文地址:https://www.cnblogs.com/laoquans/p/3181988.html
Copyright © 2011-2022 走看看