如果声明直接在类声明中

时间:2012-05-07 03:58:40

标签: ruby

为什么Ruby中可以直接在类声明中直接使用if语句? AKA:

class ApplicationController < ActionController::Base
  if foo
    bar = "x"
  end
end

我知道有一些类实例变量,因为Class继承自Object,它是一回事吗?

我只需要澄清一下这一切:)

谢谢!

3 个答案:

答案 0 :(得分:6)

  

为什么Ruby中可以直接在类声明中直接使用if语句

因为不是类“声明”,它是一个类 body ,即它的可执行代码就像方法体,块体,循环体或者脚本体。

答案 1 :(得分:4)

类声明的主体就像Ruby中的其他所有代码一样。这就是你可以使用attr_accessorprivateinclude等方法的方法 - 这些只是类的方法。这是Ruby的普遍面向对象哲学的一部分。

答案 2 :(得分:2)

没有任何问题。类声明代码通常被执行,self = class本身,定义局部变量(如foo)没有问题。请记住,您不在类实例中,而是在类本身中。

class ApplicationController < ActionController::Base
  foo = true
  if foo
    bar = "x"
  end
  puts bar
end

应该打印“x”