• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ruby 局部变量
     局部变量由小写字母或下划线(_)开头.局部变量不像全局和实变量一样在初始化前含nil值.

    ruby> $foo
       nil
    ruby> @foo
       nil
    ruby> foo
    ERR: (eval):1: undefined local variable or method `foo' for main(Object)  


    对局部变量的第一次赋值做的很像一次声明.如果你指向一个未初始化的局部变量,Ruby解释器会认为那是一个方法的名字;正如上面所见错误

    信息的.

    一般的,局部变量的范围会是



    proc{...} 

    loop{...} 

    def...end 

    class...end 

    module...end 

    整个程序(除非符合上面某个条件)



    下面的例子,define?是一个检查标识符是否已定义的操作符.如果已定义它将返回标识符的描述,否则返回nil.正如你所见的,bar的范围是

    loop的局部变量;当loop退出时,bar无定义.

    ruby> foo = 44; print foo, "\n"; defined? foo
    44
       "local-variable"
    ruby> loop{bar=45; print bar, "\n"; break}; defined? bar
    45
       nil  


    一个范围内的过程对象共享这个范围内的局部变量.这里,局部变量 bar 由 main 和过程对象 p1, p2共享:

    ruby> bar=0
       0
    ruby> p1 = proc{|n| bar=n}
       #Proc:0x8deb0>
    ruby> p2 = proc{bar}
       #Proc:0x8dce8>
    ruby> p1.call(5)
       5
    ruby> bar
       5
    ruby> p2.call
       5  


    注意开始的"bar=0"不能省略;此赋值允许bar的范围被 p1和 p2共享.不然 p1, p2 将会分别生成并处理它们自己的局部变量 bar, 调用 p2 

    也将导致"未定义局部变量或方法"错误.

    过程对象的强大在于它们能被作为参数传递:共享的局部变量即使传递出原范围也仍然有效.

    ruby> def box
        |   contents = 15
        |   get = proc{contents}
        |   set = proc{|n| contents = n}
        |   return get, set
        | end
       nil
    ruby> reader, writer = box
       [#Proc:0x40170fc0>, #Proc:0x40170fac>] 
    ruby> reader.call
       15
    ruby> writer.call(2)
       2
    ruby> reader.call
       2  


    Ruby对待范围的办法相当聪明.显然,上面例子里 contents 变量是由 reader 和 writer 共享的.我们也可以像上面那样创造多对使用box的

    reader-writer;每一对共享一个 contents 变量,对之间不相干扰.

    ruby> reader_1, writer_1 = box
       [#Proc:0x40172820>, #Proc:0x4017280c>]
    ruby> reader_2, writer_2 = box
       [#Proc:0x40172668>, #Proc:0x40172654>]
    ruby> writer_1.call(99)
       99
    ruby> reader_1.call
       99
    ruby> reader_2.call
       15   

     
    您可能感兴趣的文章:
    • Ruby基本的环境变量设置以及常用解释器命令介绍
    • Ruby中变量引用时的一些注意点
    • Ruby中类变量和实例变量的比较
    • 详细解析Ruby中的变量
    • Ruby 中$开头的全局变量、内部变量、隐藏变量介绍
    • ruby 实变量
    • 深入分析Ruby 变量
    上一篇:ruby 实变量
    下一篇:ruby 类常量 解析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ruby 局部变量 ruby,局部,变量,ruby,局部,