0
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 5 years have passed since last update.

Rubyのブロックがあまり理解できてないので自分なりにまとめてみる

Posted at

Rubyのブロックが毎回よくわからなくなります。強いエンジニアになりたひ。。。

あと、範囲オブジェクトもよくわかってないような気がします。雑魚です。

でも、Rubyにおいてブロックという概念はめっちゃ大事らしいので逃げることはできなさそうです。

仕方ないので勉強します。

勉強がてらここにアウトプットしてみます。

よかったらいいねしてください。喜びます。

ブロックは範囲オブジェクトや配列に対して使える

具体例をみながら理解していきましょう。


(1..5).each { |i| puts 2*i }

出力結果
2 4 6 8 10

波カッコの部分がブロックです。
出力結果をみながらだと理解しやすいですね。

(1..5).each { |i| puts 2*i }
を無理やり和訳すると、
「(1..5)という範囲オブジェクトに対して、eachメソッドを実行する。eachメソッドの引数は |i| puts 2*i
という感じでしょうか。

「1から5までのそれぞれの要素に対して、2倍した結果を出力する」
というとより自然言語っぽくていいですかね。

ちなみにこのコード
(1..5).each { |i| puts 2*i }
はこのように書くこともできます。

(1..5).each do |i|   puts 2*i end

他の言語やってた人だったらこっちの方がわかりやすいかもですね。
しかし、今回のようにRubyのコードが一行の場合は前者の書き方が一般的なので早く慣れる必要がありそうです。
複数行のときは後者の書き方でオッケーです。

(1..5).each { |i| puts 2*i }
は和訳すると、
「(1..5)という範囲オブジェクトに対して、eachメソッドを実行する。eachメソッドの引数は |i| puts 2*i
と言えると言いましたが、より汎用的な言い方をすると、

「範囲オブジェクトで指定された要素に対して、波カッコで書かれたRubyのコードを実行する」

とも言えますね。

ブロックを一言でいうと???

ブロックを一言でいうと、
「引数としてRubyのコードを渡せる機能」
と言えます。

今までは引数には数字や文字列、trueやfalseなどを渡していましたが、ブロックでは引数にRubyコードを渡すことができます。


とりあえずはこれくらいの理解でいいですかね。
あとはコードみたり書いたりして慣れていこうと思います。

mapもよくわかってないので、次はmapの記事を書こうかな。

0
0
2

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
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?