zoukankan      html  css  js  c++  java
  • Ruby 局部变量做block参数

       Ruby中使用yield语句调用block时可以带有参数,参数值见传送个相关联的block。如果传给block的参数是已经存在的局部变量,那么这些变量即为block的参数,他们的值可能会因block的执行而改变。

           同样的规则也适用于block内的变量:如果他们第一次出现在block内,那么他们就是block的局部变量。相反,如果他们第一次出现在block外,那么block就与其外部环境共享这些变量。

           例如:

    a =[4,2]
    b ='cat'
    c =1
    
    a.each{|b|
      c = b*a[1]
      d = c+2
    }
    
    p a =>[4,2]
    p b =>2
    p c =>8
    pdefined?(d)=>nil

         b和c都是block外部的局部变量,b作为block的参数,c是block内的变量,block与外部环境共享这些变量,它们的值因block的执行而改变;

        d是block内部局部变量,只在block内部有效

  • 相关阅读:
    CodeForces
    EOJ 3506. 斐波那契数列
    牛客练习赛13 D幸运数字Ⅳ . 康托逆展开
    UVA
    Piggy-Bank HDU
    Dollar Dayz POJ
    UVA 674 Coin Change (完全背包)
    python OOP (1)
    python lambda简易使用
    python whl模块安装方法
  • 原文地址:https://www.cnblogs.com/zs-note/p/3346683.html
Copyright © 2011-2022 走看看