::运算符如何在Ruby中工作?

时间:2015-08-16 17:07:21

标签: ruby syntax constants

我是Ruby新手,对::运算符感到困惑。为什么以下代码输出 2,3,4,5,1 而不只是输出 1 ?谢谢!

class C
  a = 5
  module M
    a = 4
    module N
      a = 3
      class D
        a = 2
        def show_a
          a = 1
          puts a
        end
        puts a
      end
      puts a
    end
    puts a
  end
  puts a
end



d = C::M::N::D.new
d.show_a

1 个答案:

答案 0 :(得分:7)

如果删除最后一行,您会看到获得5, 4, 3, 2。原因是类和模块的主体只是常规代码(与其他一些语言不同)。因此,在解析类/模块时将执行这些打印语句。

关于::如何工作 - 它只是让你在范围内移动。 ::A将引用主范围中的A。只需A即可在当前范围内引用AA::B将引用位于当前范围内的B内的A