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
  • 相关阅读:
    matplotlib 画图
    Mac anzhuangxgboost
    scala _ parameter
    cv 验证
    groupie
    pandas map, apply, applymap区别
    画图
    xgboost dmatrix中的 weight的重要性
    自然语言处理的训练范式
    java-处理大容量文本文件,行内分格符为TAB的方法
  • 原文地址:https://www.cnblogs.com/laoquans/p/3181988.html
Copyright © 2011-2022 走看看