キリンめも(技術)

記事を書いています #rails #swift #JS #UE4 #unity

Railsの会 15日目「メソッド・データ構造」

今回の範囲

f:id:geta206:20170321111825p:plain

 

agenda

  1. オブジェクトの種類
  2. メソッドの定義
  3. ブロック

 

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 |
?>   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

今までのおさらい
a-zまで配列にしてshuffleして0から7番目を文字列で表示
('a'..'z').to_a.shuffle[0..7].join