「初めてのRuby」を読むの続き
今日から
7章 メソッド
7.1 メソッド呼び出し
から
■7章 メソッド
・メソッド:Rubyにおいて手続きをモジュール化し、再利用するための仕組み
オブジェクト指向のメッセージ送信と
構造化プログラミングのサブルーチン
両方の役割
・関数型メソッド
オブジェクトとは無関係に呼びさせる
■7.1 メソッド呼び出し
・Rubyプログラムにおけるすべてのデータはメソッドを持っている
→どんなメソッドを持っているかは、クラスによる
・Rubyプログラミングで中心的な役割を果たすのがオブジェクトに
対するメソッド呼び出し
・メソッドを呼び出すには、レシーバー、メソッド名、引数を以下のように書く
a.some_method(1,"str")
a::some_method(1,"str")
クラスメソッドを呼ぶ場合を除いて、第一のスタイルが主流
■7.1.1 括弧の省略
・引数をくくる括弧はあいまいさを生まない限り省略可能
■7.1.2 メソッド連鎖
・メソッドは必ず何らかの値を返す
→メソッドの返り値ないし戻り値という
→返り値に対してメソッドを呼ぶことも可能
→メソッドチェーン
■7.1.3 レシーバーの省略
・メソッドを呼び出すレシーバーを省略することができる
→この場合は、デフォルトのレシーバーである
selfに対してメソッドが呼ばれる
→C++,Javaなどのthis
・擬似変数selfは常に「現在のレシーバー」をさしている
・privateメソッドは、常にレシーバーを省略形式で呼び出す。
・レシーバー省略とローカル変数
引数をもたないメソッドのレシーバーを省略すると、
ローカル変数の参照と見分けつかない
→ローカル変数優先
関数的メソッドでも形式的にはレシーバーを持っている
・組み込み関数
どこからでも呼び出せる便利な関数メソッド
Kernelモジュールのメソッド
■7.1.4 引数展開
・ * 修飾により、配列に格納された値を引数リストに
展開できる
・Ruby1.8では、 * 付き要素は引数リストの最後
Rubyi.9では、出現位置、回数ともフリー
配列から引数リストへの自動的展開は行わない
・関数型メソッド
非オブジェクト指向的に用いられるメソッド
レシーバーを持たない手続き
今日から
7章 メソッド
7.1 メソッド呼び出し
から
■7章 メソッド
・メソッド:Rubyにおいて手続きをモジュール化し、再利用するための仕組み
オブジェクト指向のメッセージ送信と
構造化プログラミングのサブルーチン
両方の役割
・関数型メソッド
オブジェクトとは無関係に呼びさせる
■7.1 メソッド呼び出し
・Rubyプログラムにおけるすべてのデータはメソッドを持っている
→どんなメソッドを持っているかは、クラスによる
・Rubyプログラミングで中心的な役割を果たすのがオブジェクトに
対するメソッド呼び出し
・メソッドを呼び出すには、レシーバー、メソッド名、引数を以下のように書く
a.some_method(1,"str")
a::some_method(1,"str")
クラスメソッドを呼ぶ場合を除いて、第一のスタイルが主流
■7.1.1 括弧の省略
・引数をくくる括弧はあいまいさを生まない限り省略可能
■7.1.2 メソッド連鎖
・メソッドは必ず何らかの値を返す
→メソッドの返り値ないし戻り値という
→返り値に対してメソッドを呼ぶことも可能
→メソッドチェーン
■7.1.3 レシーバーの省略
・メソッドを呼び出すレシーバーを省略することができる
→この場合は、デフォルトのレシーバーである
selfに対してメソッドが呼ばれる
→C++,Javaなどのthis
・擬似変数selfは常に「現在のレシーバー」をさしている
・privateメソッドは、常にレシーバーを省略形式で呼び出す。
・レシーバー省略とローカル変数
引数をもたないメソッドのレシーバーを省略すると、
ローカル変数の参照と見分けつかない
→ローカル変数優先
関数的メソッドでも形式的にはレシーバーを持っている
・組み込み関数
どこからでも呼び出せる便利な関数メソッド
Kernelモジュールのメソッド
■7.1.4 引数展開
・ * 修飾により、配列に格納された値を引数リストに
展開できる
・Ruby1.8では、 * 付き要素は引数リストの最後
Rubyi.9では、出現位置、回数ともフリー
配列から引数リストへの自動的展開は行わない
・関数型メソッド
非オブジェクト指向的に用いられるメソッド
レシーバーを持たない手続き