Ruby 技術メモ

配列、配列演算、繰り返し

投稿日:

本日の素振り。

配列

配列はArrayクラスのインスタンス。

配列は[]で表す。

%記法で配列生成

配列の要素が文字列である場合に限って、%W、%wによって文字列を配列化できる。
デリミタは半角スペース、%Wでダブルクォート、%wでシングルクォート(なし)。
自動的にダブルクォート、シングルクォートで括るため、
文字列の配列を作るためにダブルクォート、シングルクォートで汚すことを防げる。

joinで配列結合

配列と配列を結合して新しい配列を作るのではなく、要素を文字列として結合する。

配列の生成

Array.new()を使うと同じオブジェクトを持つ配列を作れる。
要素分の変数が確保されるのではなく、指定した値を持つ変数が1つ確保されて並ぶ。

Array.new(){}だと要素数分の変数が確保されて並ぶ。

範囲外アクセス

配列の大きさを超えてアクセスしたとき、例外とならず、アクセスしたところまで配列が広がる。
最初の位置から作った最後の位置までnilで埋められる。

負の添え字アクセス

何が何でもコード行を削減したい意思!
配列に負の添え字でアクセスすると"末尾から数えた位置"という意味になる。

配列のスライス

phpのarray_slice()に相当するやつ。指定したインデックスから何個分というやつ。

以下のように指定したインデックスから何個分を置き換えられる。

複数の戻り返却と多重代入

複数の値を返す関数を定義する。複数の値を返すように見えるが配列が返っている。

戻りとしてネストした配列を返すことができて、同じ構造の変数に代入できる。(多重代入)

+、-演算子

左オペランドと右オペランドの要素の加算、左オペランドから右オペランドの減算

減算の場合、左オペランドに重複があるときは全て削除される

*演算子

右オペランドが数値の場合は左オペランドをその回数繰り返す。
右オペランドが文字列の場合はjoinと同じ。

対してeachはループ内とループ外でスコープが異なりeach内の変数はeach外で未初期化。

-Ruby, 技術メモ
-

Copyright© ikuty.com , 2018 AllRights Reserved Powered by AFFINGER4.