配列のショートカット
CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 64/88。
Rubyは、特に文字列や連続した数値を扱う場合に、配列を作成するための便利なショートカットを提供します。これらのショートカットは時間を節約し、コードをよりクリーンにします。
%w 構文を使用すると、引用符やカンマを使わずに文字列の配列を作成できます:
fruits = %w[apple banana cherry]
puts fruits # 出力: apple, banana, cherryこれは ["apple", "banana", "cherry"] と書くのと同等ですが、ずっと簡潔です。スペースで区切られた各単語が、個別の要素になります。
シンボルの配列には、%i を使用します:
statuses = %i[pending active completed]
puts statuses # 出力: pending, active, completed連続した数値の配列を作成するには、to_aを使用して範囲を配列に変換できます:
numbers = (1..5).to_a
puts numbers # 出力: 1, 2, 3, 4, 5配列のブラケット内でスプラット演算子 * を使用することもできます:
countdown = [*5..10]
puts countdown # 出力: 5, 6, 7, 8, 9, 10これらのショートカットは、引用符やカンマによる視覚的な煩雑さなしに、既知の値のリストを素早く定義する必要がある場合に特に便利です。
チャレンジ
簡単2つの入力を読み取ります:
- スペースで区切られた単語の1行(例:
red green blue yellow) - 範囲を表すカンマで区切られた2つの整数(例:
3,7)
以下のタスクを実行してください:
- 最初の入力から
%wショートカット構文を使用して文字列の配列を作成します。入力はすでに文字列であるため、まずsplitを使用して配列に変換する必要があります。その後、alpha、beta、gammaという単語を含む別の配列を作成することで%wの使用例を示してください。 %iを使用して、start、middle、endという値を持つシンボルの配列を作成します。- 2番目の入力で提供された範囲から、配列ブラケット内でスプラット演算子
*を使用して連続する数値の配列を作成します。
以下をそれぞれ別の行に出力してください:
- 入力された単語配列の各要素
- 空行
%w配列(alpha, beta, gamma)の各要素- 空行
%iシンボル配列の各要素- 空行
- 数値範囲配列の各要素
例えば、入力が red green blue と 1,5 の場合、出力は以下のようになります:
red
green
blue
alpha
beta
gamma
start
middle
end
1
2
3
4
5入力が sun moon star と 10,13 の場合、出力は以下のようになります:
sun
moon
star
alpha
beta
gamma
start
middle
end
10
11
12
13チートシート
Rubyには、コードをよりクリーンで簡潔にするための配列作成のショートカットが用意されています。
%w構文を使用すると、引用符やカンマを使わずに文字列の配列を作成できます:
fruits = %w[apple banana cherry]
# ["apple", "banana", "cherry"] と同等%i構文は、シンボルの配列を作成します:
statuses = %i[pending active completed]
# [:pending, :active, :completed] と同等to_aを使用して範囲(range)を配列に変換します:
numbers = (1..5).to_a
# [1, 2, 3, 4, 5] を作成配列のブラケット内でスプラット演算子 * を使用して、範囲から配列を作成します:
countdown = [*5..10]
# [5, 6, 7, 8, 9, 10] を作成自分で試してみよう
# スペース区切りの単語を読み込む
words_input = gets.chomp
# 範囲(カンマで区切られた2つの整数)を読み込む
range_input = gets.chomp
# TODO: 以下にコードを記述してください
# 1. splitを使用してwords_inputから配列を作成する
# 2. alpha, beta, gammaを含む%w配列を作成する
# 3. start, middle, endを含む%i配列を作成する
# 4. 範囲を解析し、スプラット演算子(*)を使用して配列を作成する
# 各配列の要素を別々の行に出力し、配列の間に空行を入れるこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。