asya81 / ruby-practices

フィヨルドブートキャンプのRubyプラクティスの提出物をまとめるリポジトリ
0 stars 0 forks source link

実装する機能の洗い出しと実現方法の調査 #22

Closed asya81 closed 1 year ago

asya81 commented 2 years ago

仕様を満たすために必要な機能の洗い出しとRubyでの実現方法(どのクラス、モジュール、メソッドを使うか?)を調査する。

asya81 commented 2 years ago

必要な機能

asya81 commented 2 years ago

Rubyで使えそうなクラス、モジュール、メソッド

Dirクラス

class Dir (Ruby 3.1 リファレンスマニュアル)

ディレクトリの操作を行うためのクラス

Dir.children(path)

https://docs.ruby-lang.org/ja/latest/method/Dir/s/children.html

ディレクトリ path に含まれるファイルエントリ名のうち、 "." と ".." をのぞいた配列を返します。

Dir.each_child(path)

https://docs.ruby-lang.org/ja/latest/method/Dir/s/each_child.html

ディレクトリ path の "." と ".." をのぞく各エントリを表す文字列を引数として、ブロックを評価します。

ブロックが与えられなかった場合、各エントリを文字列として保持する Enumerator オブジェクトを返します。

Dir.pwd

https://docs.ruby-lang.org/ja/latest/method/Dir/s/getwd.html

カレントディレクトリのフルパスを文字列で返します。

Dir.glob

Dir.[] (Ruby 3.1 リファレンスマニュアル)

ワイルドカードの展開を行い、パターンにマッチするファイル名を文字列の配列として返します。パターンにマッチするファイルがない場合は空の配列を返します。


Arrayクラス

class Array (Ruby 3.1 リファレンスマニュアル)

配列クラスです。配列は任意の Ruby オブジェクトを要素として持つことができます。

ファイル名(String)を要素として持つ配列を使うと良さそう。 ファイル名の表示の縦横を転換させるということは、行列の転置(transpose)をすると良さそう。 ちょうど良さそうなメソッドがあった。 👇

Array#transpose

https://docs.ruby-lang.org/ja/latest/method/Array/i/transpose.html

Array#join

https://docs.ruby-lang.org/ja/latest/method/Array/i/join.html

出力用にタブ文字を入れたり、配列から文字列に変換する時に使えそう。


Enumerable モジュール

Enumerable#each_slice

https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/each_slice.html

ファイル名を行の数、列の数に応じて並べる時に使えそう

Enumerator クラス

Enumerator#with_index

Enumerator#with_index (Ruby 3.1 リファレンスマニュアル)

生成時のパラメータに従って、要素にインデックスを添えて繰り返します。インデックスは offset から始まります。

1始まりの繰り返し処理をしたい場合に使えそう。

Enumerator#max_by

Enumerable#max_by (Ruby 3.1 リファレンスマニュアル)

各要素を順番にブロックに渡して実行し、その評価結果を <=> で比較して、最大であった値に対応する元の要素、もしくは最大の n 要素が降順で入った配列を返します。

ファイル名の文字数が最大のものを取得するために使えそう。