【本日の学習内容:Ruby課題10~16】
共同開発講座のRuby課題10~16について学習しました。
✅配列.map(&:メソッド)記法
1️⃣配列.map(&:メソッド)記法を使わない場合
programming_languages = %w(ruby php python javascript)
upper_case_programming_languages = %w(ruby php python javascript)
programming_languages.map!{|programming_language| programming_language.capitalize}
upper_case_programming_languages.map!{
|upper_case_programming_language| upper_case_programming_language.upcase}
p programming_languages
p upper_case_programming_languages
2️⃣配列.map(&:メソッド)記法を使った場合
programming_languages = %w(ruby php python javascript)
upper_case_programming_languages = %w(ruby php python javascript)
programming_languages.map!(&:capitalize)
upper_case_programming_languages.map!(&:upcase)
p programming_languages
p upper_case_programming_languages
配列.map(&:メソッド)記法を使った場合ほうがシンプルに書ける!!
そしてさらにリファクタリングすると、、
programming_languages = %w(ruby php python javascript)
programming_languages.map!(&:capitalize)
upper_case_programming_languages = programming_languages.map(&:upcase)
p programming_languages
p upper_case_programming_languages
もっとシンプルに書けた!!
✅文字列や配列に対して、指定した文字列が存在するか確認する
include?メソッドを使う。
オブジェクト名.include?("検索文字列")
参考:https://www.sejuku.net/blog/57039
指定した文字列が存在した場合はTrue、存在しない場合はFalseを返す。
foods = %w(たこ たこめし うに いか たこ焼き オクラ軍艦 みずだこ)
foods.each do |food|
if food.include?("たこ")
puts "好物です。"
else
puts "まぁまぁ好きです。"
end
end
出力結果
好物です。
好物です。
まぁまぁ好きです。
まぁまぁ好きです。
好物です。
まぁまぁ好きです。
好物です。
✅二次元配列
配列の中に要素として配列が格納された形の配列。
✅多次元配列
二より大きい次元を持つ配列。
✅二次元配列や多次元配列を一次元配列にする
flattenメソッドを使う。
多次元(もしくは二次元)配列.flatten
flatten!メソッドも用意されている。
参考:https://www.sejuku.net/blog/70437
sports = ["サッカー", "バスケ", "野球", ["フットサル", "野球"], "水泳", "ハンドボール", ["卓球", "サッカー", "ボルダリング"]]
p sport2 = sports.flatten
出力結果
["サッカー", "バスケ", "野球", "フットサル", "野球", "水泳", "ハンドボール", "卓球", "サッカー", "ボルダリング"]
✅配列から重複した要素を取り除く
uniqメソッドを使う。
配列.uniq
uniq!メソッドも用意されている。
参考:https://www.javadrive.jp/ruby/array_class/index8.html
ary = [1, 2, 5, 2, 3, 5]
p newary = ary.uniq
出力結果
[1, 2, 5, 3]
✅二次元以上のハッシュの値を取得する
参考:https://shinkufencer.hateblo.jp/entry/2018/11/01/233000
hash = {a: {b: "val"}}
p hash[:a][:b]
出力結果
"val"
✅ハッシュに別のハッシュの内容を統合した新しいハッシュを返す
merge(update)メソッドを使う。
ハッシュ.merge(統合する別のハッシュ)
参考:https://qiita.com/jnchito/items/02ba8aad634a6bd8a2f6
merge!メソッドも用意されている。
currencies = { japan: 'yen' }
others = { us: 'dollar', india: 'rupee' }
currencies.merge(others)
#=> {:japan=>"yen", :us=>"dollar", :india=>"rupee"}
# 元のハッシュは変更されない
currencies
#=> {:japan=>"yen"}
別のハッシュに同じキーがあった場合は、別のハッシュの値が使われる。
currencies = { japan: 'yen' }
others = { japan: '円' }
currencies.merge(others)
#=> {:japan=>"円"}
✅ハッシュに含まれるキーの一覧を配列として取得する
keysメソッドを使う。
ハッシュ.keys
参考:https://www.javadrive.jp/ruby/hash/index8.html
ハッシュに含まれるキーを要素とする配列オブジェクトを返す。
hash = {name: "西野", age: 25}
p array = hash.keys
出力結果
[:name, :age]
✅ハッシュに含まれる値の一覧を配列として取得する
valuesメソッドを使う。
hash = {name: "西野", age: 25}
p array = hash.values
出力結果
["西野", 25]
✅ハッシュに含まれるキーと値のペアを1つの配列として作成し、その配列を要素として持つ配列として取得する。
hash = {name: "西野", age: 25}
p array = hash.to_a
出力結果
[[:name, "西野"], [:age, 25]]