为什么Ruby中可以直接在类声明中直接使用if语句? AKA:
class ApplicationController < ActionController::Base
if foo
bar = "x"
end
end
我知道有一些类实例变量,因为Class继承自Object,它是一回事吗?
我只需要澄清一下这一切:)
谢谢!
答案 0 :(得分:6)
为什么Ruby中可以直接在类声明中直接使用if语句
因为不是类“声明”,它是一个类 body ,即它的可执行代码就像方法体,块体,循环体或者脚本体。
答案 1 :(得分:4)
类声明的主体就像Ruby中的其他所有代码一样。这就是你可以使用attr_accessor
,private
和include
等方法的方法 - 这些只是类的方法。这是Ruby的普遍面向对象哲学的一部分。
答案 2 :(得分:2)
没有任何问题。类声明代码通常被执行,self = class本身,定义局部变量(如foo)没有问题。请记住,您不在类实例中,而是在类本身中。
class ApplicationController < ActionController::Base
foo = true
if foo
bar = "x"
end
puts bar
end
应该打印“x”