LoginSignup
0
2

書き方

@sample ||= begin
  # 処理1
  # 処理2

  # 戻り値
end

begin-endは例外処理以外にも使用される。
複数の文をグループ化するために使用されるブロック構文。
beginendの間に挟まれた部分は、1つのまとまりとして扱われる。

begin-end構文とメソッドそれぞれのメリット

  • begin-end構文
    • 複数の処理を1つのまとまりとして扱い、それを直接変数に代入したい場合に便利。
  • メソッド
    • 再利用性と可読性を高めるために使われ、大きな処理をまとめる際に便利。

サンプルコード

class Sample
  def execute
    # 処理終了:対象会員が存在しない場合
    if target_members.blank?
      puts '対象会員が存在しません。'
      exit
    end

    # 更新処理 ※省略
    update_members(target_members)
  end

  # 対象会員抽出
  def target_members
    @target_members ||= begin
      results = Member.where(active: true)
      results.each { |member| member.name += '様' }

      results
    end
  rescue => e
    # エラーハンドリングの処理
    puts "エラーが発生しました: #{e.message}"
  	puts e.backtrace.join("\n")
  end

  # 更新処理のサンプル
  def update_members(members)
    # 省略
  end
end

# Sampleクラスのインスタンスを作成し、executeメソッドを呼び出す
Sample.new.execute

この例だと

  • begin-end構文で複数処理を1つのまとまりとして扱い、可読性を高めている。
  • #target_membersというメソッドにすることで再利用性可読性を高めている。
  • メモ化しているため、#target_membersを何度呼び出しても無駄にクエリ発行等の処理が実行されることはない。
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2