1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】ブロック引数yieldとプロック引数&block

Last updated at Posted at 2021-12-16

##ブロック引数

###yield
自分で定義したブロック付きメソッドでブロックを呼び出すときに使う。 yield に渡された値は| |の間にはさまれた変数(ブロックパラメータ)に代入される。

# ブロック付きメソッドの定義の働きは与えられたブロック(手続き)に引数1, 2を渡して実行すること
def foo
  yield(1, 2)
end

# 「2引数手続き、その働きは足し算をして印字する」というものを渡して実行させる
foo { |a, b| a + b }
#=> 3
  • yieldの部分にメソッドhoge1 hoge2のそれぞれのブロックの中身をそのまま置き換えたイメージ。
# users_info = {
# "kato" => {
#   :id=>1,
#   :age=>30,
#   :birthday=>'1990-01-01'},
# "yamada" => {},
# "suzuki" => {}
# }

def foo
  users_info.values.filter do |values|
    values.present? && yield(values)
  end
end

def hoge1
  foo do |v|
    (v[:id].present? && v[:age].present?) || v[:birthday].present?
  end
end

def hoge2
  foo do |v|
    v[:id].present? && v[:birthday].present?
  end
end

##Proc引数(プロック引数)
###&block

&blockという引数を宣言すると、ブロックがblock変数に代入される。
block.callメソッドを呼ぶとブロックの処理が実行される。

def hoge(&block)
  block.call(1, 2)
end

hoge { |a, b| a + b }
#=> 3

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?