1. ホーム
  2. ruby

Rubyのパイプ記号は何のためにあるのですか?

2023-10-13 18:13:40

質問

Rubyのパイプ記号は何のためにあるのですか?

PHPとJavaのバックグラウンドから、RubyとRoRを学んでいますが、このようなコードに出くわすことがあります。

def new 
  @post = Post.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml { render :xml => @post }
  end
end

は何ですか? |format| の部分は何をしているのでしょうか?PHP/Javaでこれらのパイプ記号に相当する構文は何ですか?

どのように解決するのですか?

ブロックに渡される変数です。

def this_method_takes_a_block
  yield(5)
end

this_method_takes_a_block do |num|
  puts num
end

これは "5" を出力します。もっと難解な例です。

def this_silly_method_too(num)
  yield(num + 5)
end

this_silly_method_too(3) do |wtf|
  puts wtf + 1
end

出力は "9"です。