2011-09-17 7 views

答えて

4

それは言う:

  1. 電流は(最新はない限り)
  2. すでに設定されている@current_user@current_user場合(||=一部を)何もしないと戻り、他
  3. 呼び出して設定されていない場合を除きメソッド/ヘルパーlogin_from_sessionを呼び出し、結果を@current_user
  4. に、それ以外の場合は前回の呼び出しがnil又はfalse、このよう

    def current_user 
        if !(@current_user == false) # 1 
        if (@current_user) 
         return @current_user # 2 
        end 
        if (@current_user = login_from_session) 
         return @current_user # 3 
        end 
        if (@current_user = login_from_cookie) 
         return @current_user # 4 
        end 
        end 
        return @current_user # 5 
    end 
    
    でより明確になるように書き換えることができ

@current_userインスタンスの値を返す変数いずれの場合にも方法/ヘルパーlogin_from_cookieを呼び出し、@current_user

  • に結果を割り当てます

    これはルビーの表現力(そして美しさ)です。 Rubyでのみnilfalseが偽ブールし評価することを忘れないでください/ else文と||&&オペレーター

    その他のヒントがルビーで、よりよく理解するならば、あなたは次のルールがあります。

    任意の関数の戻り値を機能を評価し、最後の式ですので、

    def foo 
        any_value 
    end 
    

    def foo 
        return any_value 
    end 
    
    のと同じです式の終わりに文が同じでない限り/ステートメントがない限り、そう

    do something if value 
    

    if (value) 
        do_something 
    end 
    

    ||=オペレータの同じ場合/場合

    ザは

    のショートカットであります
    @a ||= some_value 
    # is equivalent to 
    if [email protected] 
        @a = some_value 
    end 
    

    これらのルールをすべて組み合わせて、説明した方法があります。

  • 関連する問題