Ruby 局部变量做block参数

后端开发   发布日期:2025年07月05日   浏览次数:115

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

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

       例如:

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

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

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

以上就是Ruby 局部变量做block参数的详细内容,更多关于Ruby 局部变量做block参数的资料请关注九品源码其它相关文章!