主な内容
Enumerableモジュール
配列やハッシュに組み込まれているモジュール(メソッド群)
- mapメソッド
各要素を処理して新しい配列を返す。
例)arr = [1, 2, 3].map do |i|
i * 2
end
- selectメソッド
条件に一致したものだけの配列を返す。
例)arr = [1, 2, 3].map do |i|
i % 2 == 0
end
splitとjoin
p '1,2,3'.split(',')
p [1, 2, 3].join(',')
インスタンスメソッドの呼び出し方法
- obj.hoge(引数)
- obj.hoge ブロック
例)obj.hoge { |var|
# 処理
}
- obj 演算子 引数
例)1 + 2
これは1.+(2)
ともかける
メソッド定義
def add(x, y)
x + y
end
# 呼び出しは定義より後でなければならない
キーワード引数
デフォルト引数をハッシュ形式で定義すると、呼び出し時にキー名で指定する必要があるため可読性が上がる。
def calc_tax(price, tax_rate:0.08)
(price * tax_rate).to_i
end
puts calc_tax(100, tax_rate:0.05)
# puts calc_tax(100, {:tax_rate => 0.05})と同じ
引数を配列として受け取る
def calc_tax(*values)
(values[0] * values[1]).to_i
end
puts calc_tax(200, 0.08)
クラス
class クラス名
# コンストラクタ
def initialize
end
# publicメソッド
def method1
end
# クラスメソッド
def self.method2
end
private # 以降すべてプライベートメソッド
def method3
end
end
# インスタンス生成
クラス名.new
# クラスメソッド実行
クラス名.method2
クラスの変数
class Hoge2
# 定数
TAX_RATE = 0.08
# クラス変数
@@age = 30
# publicメソッド
def method1
# インスタンス変数
@name = 'tanaka'
puts @name
puts @@age
@@age = @@age + 1
end
# クラスメソッド
def self.method2
puts @@age
end
end
hoge2 = Hoge2.new
hoge2.method1
Hoge2.method2
puts Hoge2::TAX_RATE
※クラスインスタンス変数というものがあるので注意
https://qiita.com/mogulla3/items/cd4d6e188c34c6819709
継承
クラス名 < 親クラス名
例)class Dog < Animal end
例外補足
begin
# 処理
rescue NameError => e
# 例外発生時の処理
ensure
# 必ず実行される処理
end
※すべての例外を補足する場合はrescure => e
※メソッド全体が例外発生の対象となる場合はbeginを省略可能
モジュール
メソッド定義をまとめたもの。
インスタンスメソッドとしてクラスに組み込む場合はinclude
、クラスメソッドとして組み込む場合はextend
を使う。
module MyModule
def echo_hello
puts 'hello'
end
end
class ModuleTest
include MyModule
extend MyModule
end
module_test = ModuleTest.new
module_test.echo_hello
ModuleTest.echo_hello
標準ライブラリ
date, open-uri, jsonなど。
require 'date'
today = Date.today
puts today.day
require 'open-uri'
file = open('https://yahoo.co.jp')
puts file.read
file = open('./Study.iml')
puts file.read
# Kernelモジュールのopenメソッドがオーバーライドして拡張される
ファイル操作
file = open('./open_test.txt', 'w')
file.puts 'abcd'
file.close
file = open('./open_test.txt', 'r')
puts file.read
file.close
# ブロックを渡した場合、closeは不要。
open('./open_test.txt', 'w') do |f|
f.puts('hello')
end
File.new (Ruby 3.3 リファレンスマニュアル)
path で指定されるファイルをオープンし、] オブジェクトを生成して 返します。
正規表現
matches = 文字列.match(/パターン/)
マッチしたらMatchDataオブジェクト(配列のようにmatches[1]などで参照可能)、マッチしなかったらnil、を返す。
matches[1]、matches[2]は特殊変数$1、$2でもマッチした文字列を取得可能。/パターン/ =~ 文字列
はマッチした位置を返す。
一致しない場合はnil。
※-
(ハイフン)は[]の中で使用される場合だけ特別な意味を持つ。[]以外ではエスケープは必要ない。matches = '090-1234-5678'.match(/([0-9]{3})-([0-9]{4})-([0-9]{4})/)
正規表現による文字列置換
文字列.gsub(/パターン/, 文字列)
例)puts 'アイウエオ'.gsub(/アイ/, 'あい')
※gsubはすべて置換する。subだと最初にマッチしたものだけ
コメント