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_accessorのメソッドを使用する方法です。これらはすべて、クラスの単なるメソッドです。これは、Rubyの広範なオブジェクト指向の哲学の一部です。privateinclude

于 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 に答える