1

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

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

我知道有一些类实例变量,因为类继承自对象,是一样的吗?

我只需要对整个事情进行一些澄清:)

谢谢!

4

3 回答 3

6

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

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

于 2012-05-07T10:23:44.300 回答
4

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

于 2012-05-07T04:26:50.837 回答
2

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

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

应该打印“x”

于 2012-05-07T04:20:28.193 回答