Ruby メソッド
to_a
メソッド
オブジェクトを配列に変換する。
範囲オブジェクトでの使用例
範囲オブジェクトを配列に変換する場合、to_a
メソッドの範囲内の全ての要素を含む配列を生成します。
range = 1..5
array = range.to_a
puts array.inspect
# 出力: [1, 2, 3, 4, 5]
列挙可能オブジェクトでの使用例
ハッシュなどでも配列に変換することができます。
hash = {a: 1, b: 2, c: 3}
array = hash.to_a
puts array.inspect
# 出力: [[:a, 1], [:b, 2], [:c, 3]]
format
メソッド
指定されたフォーマットに従って文字列を生成するために使用されます。
format(フォーマット指定子, 値1, 値2, ...)
フォーマット指定子
-
%s
- 文字列として変換。 -
%d
- 整数として変換。 -
%f
- 浮動小数点数として変換。 -
%.nf
- 浮動小数点数を小数点以下n桁で丸めて変換。
each
メソッド
配列やハッシュなどの列挙可能なオブジェクトの各要素に対して、ブロック内のコードを実行します。もとのオブジェクトを変更せず、また新しいオブジェクトも生成しません。戻り値は、元のオブジェクト自身になります。
map
メソッド
each
メソッドとは異なり、各要素に対するブロックの戻り値を新しい配列に集めます。つまり、元のオブジェクトは変更せず、新しい配列を生成して返します。
reverse
メソッド
文字列や配列を逆順に並び替える。オブジェクト自体を変更せず、その逆順の新しいオブジェクトを返す非破壊メソッドです。reverse!
は破壊メソッドになります。
scan
メソッド
文字列内で正規表現パターンに一致するすべての部分を検索し、一致した部分の配列として返します。
slice
メソッド
文字列や配列から特定の部分を取り出すために使用されます。
配列.slice(開始位置, 長さ)
配列.slice(開始位置..終了位置)
equal?
二つのオブジェクトが同一なものかどうかを調べるときに使用する。再定義してはいけない。
a = "hello"
b = "hello"
a.equal?(b) # => false
c = a
a.equal?(c) # => true
↑ aとbは同じhello
を持っていますが、異なるオブジェクトなのでfalseを返します。cはaと同じオブジェクトを参照しているためtrueを返します。
eql?
二つのオブジェクトが等価であるかどうかを確認します。ハッシュのキーとして使われる際の等価性を判断するのに適しています。完全に同じ型と値のみを等価とします。
1 == 1.0 # => true
1.eql?(1.0) => false
hash = { 1 => "integer", 1.0 => "float" }
hash[1] # => "float"
hash[1.0] # => "float"
attr_accessor
クラス内でインスタンス変数のゲッター(読み取りメソッド)とセッター(書き込みメソッド)を同時に自動的に定義するためのメソッドです。
指定されたシンボル名に対応するインスタンス変数に対してアクセスメソッドを提供します。
class Person
attr_accessor :name, :age
end
person = Person.new
person.name = "Jun"
person.age = "20"
puts person.name # => Jun
puts person.age #=> 20
↑ attr_accessor
により、name
とage
というインスタンス変数に対して、自動的に以下のメソッドが定義されます。
- name ゲッターメソッド(@nameの値を取得)
- name= セッターメソッド(@nameに値を設定)
Date.new
年・月・日を引数として受け取り、その値に基づいた日付のオブジェクトを返します。
date = Date.new(2024,4,23)
puts date #=> 2024-04-23
strftime
特定のフォーマットに従って日付や時刻を文字列形式で整形するために非常に便利なメソッドです。
date = Date.new(2024,4,23)
formatted_date = date.strftime("%Y-%m-%d")
puts formatted_date # => 2024-04-23
よく使用されるフォーマット指定子
- %Y : 年を4桁で表示(例: 2024)
- %m : 月を2桁で表示(例: 04)
- %d : 日を2桁で表示(例: 23)
- %H : 24時間表記の時を2桁で表示(例: 14)
- %M : 分を2桁で表示(例: 30)
- %S : 秒を2桁で表示(例: 45)
- %A : 曜日のフルネーム(例: Sunday)
- %a : 曜日の短縮形(例: Sun)
- %B : 月のフルネーム(例: January)
- %b : 月の短縮形(例: Jan)
concat
文字列や配列を結合するために使用されます。元のデータに指定したデータを追加することができます。(破壊的メソッド)
str1 = "Hello"
str2 = "World"
str1.concat(str2)
puts str1 # => "Hello World"
index
配列や文字列で特定の要素や文字が最初に出現する位置を調べるために使用されます。指定された要素が見つかった時はその位置のインデックスを返し、見つからない場合はnilを返します。
array = [10, 20, 30, 40]
puts array.index(20) # => 1
invertメソッド
ハッシュのキーと値を逆転させるために使用されます。ハッシュのオブジェクトに対して呼び出すことができ、新しいハッシュを返します。返される新しいハッシュでは、元のハッシュの各値が新しいキーとなり、各キーが新しい値となります。
hash = {a: 1, b: 2, c: 3}
inverted_hash = hash.invert
puts inverted_hash # => {1=>:a, 2=>:b, 3=>:c}
- もし、元のハッシュに同じ値が複数存在する場合は、逆転したハッシュではその値をキーとするエントリーが一つだけになります。
Time.now
プログラムが実行されるその瞬間のシステム日時を取得します。
eof?
入力ストリームが終端に達したかどうかを判定するために使用されます。ファイル内の内容が全て読み出された後や、入力の終わりに達した際にtrueと返します。
file = File.open("test.txt", "r")
while !file.eof?
line = file.readline
puts line
end
file.close
readlines
ファイルや他の入力ストリームから全ての行を読み込んで、それらの行を配列の要素として返すメソッドです。
# ファイルから全行を読み込む
lines = File.readlines("example.txt")
# 読み込んだ行を一つずつ表示
lines.each do |line|
puts line
end
seek
IOオブジェクトの現在の読み書き位置を指定された位置に移動させるために使用されます。
file = File.open("text.txt", "r")
# ファイルの先頭から100バイトの位置に移動
file.seek(100, IO::SEEK_SET)
puts file.read
file.close
dirname
Fileクラスのクラスメソッドであり、与えられたファイルパスからディレクトリ部分のみ抽出するために使用されます。このメソッドはファイル名や最終的なスラッシュを取り除き、親ディレクトリのパスを返します。
path = "/home/user/docs/letter.txt"
puts File.dirname(path) # => "/home/user/docs"
chmod
ファイルやディレクトリのアクセス権を変更するために使用されます。
File.chmod(0644, 'example.txt')
rmdir
ディレクトリを削除するために使用されます。
Dir.rmdir('path/to/empty_directory')
collect
別名map。配列やその他の列挙可能なオブジェクトに対して操作を行い、各要素に対してブロック内で指定された処理を適用し、その結果を新しい配列として返します。
select
配列やその他のEnumerableオブジェクトから特定の条件に一致する要素だけを選択して新しい配列を作成するためのメソッドです。
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = numbers.select { |number| number.even? }
puts even_numbers.inspect # => [2, 4, 6]
select!
メソッドは破壊的であり、元の配列自体を変更し、条件に合わない要素を配列から削除します。
detect
別名find。配列などから最初に条件を満たす要素を見つけ出すために使用されます。
inject
別名reduce。配列やハッシュなどのコレクションを一つにまとめる際に使用されます。コレクションの各要素に対してブロックを繰り返し適用し、単一の結果を生成します。
each_cons
指定された数(n)の連続する要素を取り出し、それぞれの組み合わせに対してブロックを実行します。配列のスライスを連続的に取り扱いたいときに便利です。
[1,2,3,4,5].each_cons(3) do |a, b, c|
puts "#{a}, #{b}, #{c}"
end
# 出力
1, 2, 3
2, 3, 4
3, 4, 5