Railsの会 15日目「メソッド・データ構造」
今回の範囲
agenda
- オブジェクトの種類
- メソッドの定義
- ブロック
1. オブジェクトの種類
length 文字の長さを調べる
>> "foobar".length # 文字列に "length" というメッセージを送る => 6
? 論理値で返す
例
>> "foobar".empty? => false >> "".empty? => true
メソッドチェーン メソッド連続的に呼び出すこと
例
>> a << "foo" << "bar" # 配列に連続して追加する => [42, 8, 17, 6, 7, "foo", "bar"]
配列の種類
1 to_a メソッドを使う
>> (0..9).to_a # 丸かっこを使い、範囲オブジェクトに対してto_aを呼びましょう => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2 %w (配列)
>> a = %w[foo bar baz quux] # %wを使って文字列の配列に変換 => ["foo", "bar", "baz", "quux"]
3 [ ] を使った書き方
>> a[0..2] => ["foo", "bar", "baz"]
数字を使った配列の指定方法
>> a = [42, 8, 17]
=> [42, 8, 17]
>> a[0] # Rubyでは角かっこで配列にアクセスする
=> 42
>> a[1]
=> 8
>> a[2]
=> 17
>> a[-1] # 配列の添字はマイナスにもなれる! == last
=> 17
その他の指定方法
>> a # 配列「a」の内容を確認する
=> [42, 8, 17]
>> a.first=> 42>> a.second #基本使わない=> 8
>> a.last
=> 17
>> a.last == a[-1] # == を使って比較する
=> true
2.メソッドの定義
デフォルトの値を返さなくていい時
def string_message(str = '')
strに値が絶対入る場合は省略してもよい。
nulが入る時は、初期値を上記のようにblankに指定しないといけない。
値の追加方法(配列)
>> a.push(6) # 6を配列に追加する
=> [42, 8, 17, 6]
>> a << 7 # 7を配列に追加する
=> [42, 8, 17, 6, 7]
>> a << "foo" << "bar" # 配列に連続して追加する
=> [42, 8, 17, 6, 7, "foo", "bar"]
3.ブロック
処理が一つの時の書き方
>> (1..5).each { |i| puts 2 * i }
2
4
6
8
10
=> 1..5
処理が2つ以上の時の書き方
>> (1..5).each do | i |
?> puts 2 * i
>> end
2
4
6
8
10
=> 1..5
mapとeachの違い
map 変更したものを返す ( 配列 (中身を変更したい時)
each 実行結果を返す ( 中身の処理を変えたい時)
基本mapで書くとどの処理でも通る。
>> %w[A B C].map { |char| char.downcase }
=> ["a", "b", "c"]
>> %w[A B C].map(&:downcase) #省略した書き方( char
=> ["a", "b", "c"]
test ブロック
test "should get home" do
get static_pages_home_url
assert_response :success
assert_select "title", "Ruby on Rails Tutorial Sample App"
end
今までのおさらい