#Ruby 範囲と配列についてもっと〜チェリー本4章〜#
※この記事は初心者の私がチェリー本で学習するにあたって新しく知ったことや考えたことアウトプットするための場として書いています。
この記事は以下の情報を参考にして記述し、一部引用しています。
プロを目指す人のためのRuby入門
配列の便利メソッドあれこれ
###範囲から値が連続する配列を作成する###
(1...4).to_a
=> [1, 2, 3]
[*'x'..'z']
=> ["x", "y", "z"]
.to_a
メソッドで配列化することができます。
2つ目は[]の中に*
を範囲の頭につけても配列化することができます。
###配列の要素を取得するメソッド###
a = [1, 2, 3, 4, 5]
a.values_at(0,1,3)
=> [1, 2, 4]
a[-1]
=> 5
a.last(3)
=> [3, 4, 5]
a.first(2)
=> [1, 2]
配列の添字から要素を複数指定して取得するときはvalue_at
メソッドを使用します。
要素を1つ指定したい場合は配列[]
で指定します。
配列の前後から複数指定する場合は.last
、.first
メソッドを使用します。
配列のメソッドについては配列の便利メソッドあれこれがとても参考になります!
###配列に初期値を設定する場合の注意点-4.7.13より引用###
a = Array.new(5, 'default')
=> ["default", "default", "default", "default", "default"]
str = a[0].upcase!
=> "DEFAULT"
a => ["DEFAULT", "DEFAULT", "DEFAULT", "DEFAULT", "DEFAULT"]
a = Array.new(5){'default'}
=> ["default", "default", "default", "default", "default"]
str = a[0].upcase!
a => ["DEFAULT", "default", "default", "default", "default"]
上のコードは同じ参照値の要素が同時に作られるため、1つ変更すると5つとも変更されてしまいます。
下のコードはブロックによって一つずつ別のオブジェクトの要素が作成されるため1つ変更してもその他の要素には影響を与えません。
##あとがき##
今日は@jnchitoさんのQiitaで記事を公開するときに気を付けるべきマナーについて 〜無断でネットや書籍の内容を丸写しするのはやめよう〜という記事を読んで少なからず当てはまる点があるのでは無いかと思い、記事の書き方を改めるのと過去の記事に注釈を追記しました。
先程の記事内でもリンクが貼ってあった”ブログに技術書の内容を丸写しする問題点と、オリジナルなコンテンツを書くためのアイデア”がとても参考になりました!
最近コードを写経とは別に実際に書く機会が無いとQiitaなどに記事を上げるだけではアウトプットの質が低いなと思えて来ました...(何かコードの問題集みたいなのないかな)