【備忘録】チェリー本第2章:Rubyの基礎
2.6 メソッドの定義(P.36)
メソッドの戻り値
Rubyは最後に評価された式がメソッドの戻り値になるため、return
のようなキーワードは不要。
以下のように、returnはメソッドを途中で脱出したい場合に使用することが多い。
irb(main):012:1* def greeting(country) irb(main):013:1* return '入力してください' if country.nil? irb(main):014:1* irb(main):015:2* if country == 'japan' irb(main):016:2* 'こんにちは' irb(main):017:2* else irb(main):018:2* 'hello' irb(main):019:1* end irb(main):020:0> end => :greeting irb(main):021:0> irb(main):022:0> greeting(nil) => "入力してください" irb(main):023:0> greeting('japan') => "こんにちは"
2.10 真偽値と条件分岐についてもっと詳しく
2.10.5 条件演算子(三項演算子)
式 ? 真だった場合の処理 : 偽だった場合の処理
irb(main):025:0> n = 15 irb(main):026:1* if n > 10 irb(main):027:1* '10より大きい' irb(main):028:1* else irb(main):029:1* '10以下' irb(main):030:0> end => "10より大きい"
上記の条件分岐を、条件演算子で書けば以下のような感じ。
irb(main):031:0> n = 15 irb(main):032:0> n > 10 ? '10より大きい' : '10以下' => "10より大きい"
条件演算子の結果を代入することも可能。
irb(main):033:0> n = 15 irb(main):034:0> message = n > 10 ? '10より大きい' : '10以下' irb(main):035:0> message => "10より大きい"
シンプルなif文は条件演算子ですっきり書けるかもしれないけど、複雑な条件文で使うとかえってコードの可読性が悪くなる場合もあるから注意。
2.11 メソッド定義についてもっと詳しく
2.11.1 デフォルト値付きの引数
引数なしで呼び出した場合もエラーにならない。
def メソッド(引数1 = デフォルト値1, 引数2 = デフォルト値2) # 処理 end
irb(main):036:1* def greeting(country = 'japan') irb(main):037:2* if country == 'japan' irb(main):038:2* 'こんにちは' irb(main):039:2* else irb(main):040:2* 'hello' irb(main):041:1* end irb(main):042:0> end => :greeting irb(main):043:0> greeting => "こんにちは" irb(main):044:0> greeting('china') => "hello"
2.12 その他の基礎知識
2.12.5 参照の概念を理解する
Rubyの変数にはオブジェクトそのものではなく、オブジェクトへの参照が格納されている。
ある変数をほかの変数に代入したり、メソッドの引数として渡すと、新しい変数やメソッドの引数は元の変数のオブジェクトを参照している。
どのオブジェクトを参照しているかは、object_id
メソッドを使えばわかる。
irb(main):048:0> a = 'hello' irb(main):049:0> b = 'hello' irb(main):050:0> c = b irb(main):051:0> a.object_id => 180 irb(main):052:0> b.object_id => 200 irb(main):053:0> c.object_id => 200
2.12.7 require
組み込みライブラリでない標準ライブラリやgemを利用する場合は、明示的にそのライブラリを読み込む必要がある。
自分で作成したRubyプログラム(クラスの定義など)を読み込む場合も必要。
require ライブラリ名