【Ruby】メソッド一覧

#はじめに
初学者が学習の為にRubyのメソッド(配列やハッシュに関係するメソッドを中心に)をまとめました。


##メソッド一覧
###keysメソッド
hashからkeyを取り出す

```ruby
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.keys
=> ["ruby", "php", "java"]
```

###valuesメソッド
hashからkeyを取り出す

```ruby
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.values
=> [1, 2, 3]
```

###storeメソッド
hashにkeyと値を追加する

```ruby
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.store("python",4)
=> 4
> x
=> {"ruby"=>1, "php"=>2, "java"=>3, "python"=>4}
```

###selectメソッド
指定条件に合致するKeyと値を表示する

```ruby
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.select {|k, v| v >= 3 }
=> {"java"=>3}

#以下も同様
 x.select do |k, v|
  v >= 3
 end
```

###to_aメソッド
レシーバー自身を返すメソッド。
範囲オブジェクトを、配列に変換する際に使用する場合が多い。
配列を２次元配列として返す。

```ruby
> X = 1..10
=> 1..10
> X.to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.to_a
=> [["ruby", 1], ["php", 2], ["java", 3]]
```
###to_hメソッド
２次元配列をハッシュ化する。
レシーバを[key, value] のペアの配列として、Hash を返す。

```ruby
> x = [ ["ruby",1] , ["php",2] , ["java",3] ]
=> [["ruby", 1], ["php", 2], ["java", 3]]
> x.to_h
=> {"ruby"=>1, "php"=>2, "java"=>3}

array = User.all
array.map { |user| [user.id, user.name] }.to_h
> {1=>"sample", 2=>"sampleb", 3=>"Guest User", 4=>"test user"}

```

###to_iメソッド
integerクラス(整数)に変換する

```ruby
> x = "123"
=> "123"
> x.to_i
=> 123
```

###*メソッド
四則演算の掛け算をするメソッド
Integerクラスの *メソッドは引数にIntegerクラスのインスタンスを与えなければいけない。
つまり右辺に整数を書く必要がある。

```ruby
puts "*" * 4
> ****
=> nil

puts 4 * "*"
TypeError: String can't be coerced into Integer
from (pry):18:in `*'
```

###compactメソッド
配列のnill要素を削除する

```ruby
> x = ["ruby","php",nil,"java",nil]
=> ["ruby", "php", nil, "java", nil]
> x.compact
=> ["ruby", "php", "java"]
```

###uniqメソッド
配列内の重複要素を削除する

```ruby
> x = ["ruby","php",nil,"java",nil,"ruby","java"]
=> ["ruby", "php", nil, "java", nil, "ruby", "java"]
> x.uniq
=> ["ruby", "php", nil, "java"]
```
###joinメソッド
配列の要素を結合して一つの文字列にする
配列の要素が配列であった場合平坦化する

```ruby
#結合
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.join
=> "rubyphpjava"

#引数で区切る
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.join(",")
=> "ruby,php,java"

#平坦化
> x = [["ruby","php"],["python","java"]]
=> [["ruby", "php"], ["python", "java"]]
> x.join(" ")
=> "ruby php python java"
```



###pushメソッド
配列の末尾に要素を連結する

```ruby
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.push("python")
=> ["ruby", "php", "java", "python"]
```

###popメソッド
配列の末尾の要素を削除する
削除された要素は、popメソッドの戻り値として返る

```ruby
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.pop
=> "java"
> x
=> ["ruby", "php"]

#引数に代入した数字の分要素を削除
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.pop(2)
=> ["php", "java"]
> x
=> ["ruby"]
```
###shiftメソッド
配列の先頭の要素を削除
配列の先頭の要素を取り出す

```ruby
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.shift
=> "ruby"
> x
=> ["php", "java"]

#引数に代入した数字の分要素を削除
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.shift(2)
=> ["ruby", "php"]
> x
=> ["java"]

#要素を取り出す(popメソッドでも要素を取り出すことができる)
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> X = x.shift
=> "ruby"
> X
=> "ruby"
```

###unshiftメソッド
配列の先頭に要素を挿入する

```ruby
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.unshift("python")
=> ["python", "ruby", "php", "java"]
```

###splitメソッド
指定した区切り文字で対象となる文字列を分割して配列にする

```ruby
> x = "ruby, php, java"
=> "ruby, php, java"
> x.split(',')
=> ["ruby", " php", "java"]

#引数で指定しないと一文字ずつ配列にする
> x = "ruby"
=> "ruby"
> x.split('')
=>["r","u","b","y"] 
```
###sliceメソッド
配列や文字列から指定の要素を切り出す

```ruby
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.slice(0)
=> "ruby"

#「指定位置から指定の数」の要素をまとめて取りだすこともできる
#第一引数でインデックスを指定して第二引数で要素数を指定する
> x.slice(0,2)
=>["ruby", "php"]
```

###sortメソッド
配列の順番を並び替える

```ruby
> x = [3,5,1,25,8]
=> [3,5,1,25,8]
> x.sort
=> [1, 3, 5, 8, 25]
#reverseメソッドで降順も可能
> x.sort.reverse
=> [25, 8, 5, 3, 1]
```

###pluckメソッド
引数に指定したカラムの配列を返す(Railsのメソッド)

```ruby
#Userモデルのnameカラムに　"Itiro"　"jiro"　"taro"　が入っている場合
=> User.pluck(:name)
=> ["Itiro","jiro","taro",]
```


###chompメソッド
Stringクラスのメソッドで、文字列の末尾から改行コードを取り除いた文字列を返す

```ruby
> a = "ruby\n"
=> "ruby\n"
> p a
"ruby\n"
=> "ruby\n"
> p a.chomp
"ruby"
=> "ruby"
#改行コードのない文字列に対して破壊的メソッドを使うとnilが返る
> a.chomp!
=> "ruby"
> a.chomp!
=> nil
```

###transposeメソッド
Arrayクラスのメソッドで、行列の転置(行と列の入れ換え)を行う。

```ruby
key = [1, 2, 3]
value = ["gold", "silver", "bronze"]
ary = [key, value].transpose
p ary
=>[[1, "gold"], [2, "Silver"], [3, "Bronze"]]


p [[1,2],
   [3,4],
   [5,6]].transpose
 => [[1, 3, 5], [2, 4, 6]]

```


##最後に
誰かのお役にたてれば幸いです。
間違えている部分があればコメントお願いいたします。


参考にした記事
https://tech.raksul.com/2018/02/06/ruby_array_to_hash/
https://programming-beginner-zeroichi.jp/articles/93