Rubyist生活に欠かせないブロック構文の話4. 問題 10回 Ruby と出力して下さい。
for i in 1..10!
puts 'Ruby'!
end
普通に書いてみる
5. 問題 10回 Ruby と出力して下さい。
for i in 1..10!
puts 'Ruby'!
end
普通に書いてみる
もう少しRubyっぽく書いてみる
10.times do!
puts 'Ruby'!
end
6. 問題 10回 Ruby と出力して下さい。
for i in 1..10!
puts 'Ruby'!
end
普通に書いてみる
もう少しRubyっぽく書いてみる
10.times do!
puts 'Ruby'!
end
forは繰り返し処理のための構文
7. 問題 10回 Ruby と出力して下さい。
for i in 1..10!
puts 'Ruby'!
end
普通に書いてみる
もう少しRubyっぽく書いてみる
10.times do!
puts 'Ruby'!
end
forは繰り返し処理のための構文
timesはIntegerクラスのメソッド
8. 問題 10回 Ruby と出力して下さい。
10.times do!
puts 'Ruby'!
end
timesがメソッドならその後ろのdo … endはなにか?
9. 問題 10回 Ruby と出力して下さい。
10.times do!
puts 'Ruby'!
end
timesがメソッドならその後ろのdo … endはなにか?
→ブロック
11. ブロックを受け取るメソッド
array = [24, 21, 4, 41, 39]!
!
# 配列の値が奇数か偶数か判定!
array.each do |i|!
if i % 2 == 1!
puts "#{i} is odd"!
else!
puts "#{i} is even"!
end!
end
each
12. ブロックを受け取るメソッド
array = [24, 21, 4, 41, 39]!
!
# 配列の値が奇数か偶数か判定!
array.each do |i|!
if i % 2 == 1!
puts "#{i} is odd"!
else!
puts "#{i} is even"!
end!
end
each
ブロック引数
13. ブロックを受け取るメソッド
collect, map
array = [24, 21, 4, 41, 39]!
!
# 数字の代わりに奇数ならtrue、偶数ならfalseが入った配列を作れ!
array.collect do |i|!
i % 2 == 1!
end # => [false, true, false, true, true]!
!
!
!
!
!
!
!
!
!
!
!
!
14. ブロックを受け取るメソッド
collect, map
array = [24, 21, 4, 41, 39]!
!
# 数字の代わりに奇数ならtrue、偶数ならfalseが入った配列を作れ!
array.collect do |i|!
i % 2 == 1!
end # => [false, true, false, true, true]!
!
# もう少しわかりやすくしてみる!
array.collect do |i|!
i.odd?!
end # => [false, true, false, true, true]!
!
!
!
!
!
!
15. ブロックを受け取るメソッド
collect, map
array = [24, 21, 4, 41, 39]!
!
# 数字の代わりに奇数ならtrue、偶数ならfalseが入った配列を作れ!
array.collect do |i|!
i % 2 == 1!
end # => [false, true, false, true, true]!
!
# もう少しわかりやすくしてみる!
array.collect do |i|!
i.odd?!
end # => [false, true, false, true, true]!
!
# 1行で書いてみる!
array.collect { |i| i.odd? }!
!
!
! do … endの代わりに{ }でもいい
16. ブロックを受け取るメソッド
collect, map
array = [24, 21, 4, 41, 39]!
!
# 数字の代わりに奇数ならtrue、偶数ならfalseが入った配列を作れ!
array.collect do |i|!
i % 2 == 1!
end # => [false, true, false, true, true]!
!
# もう少しわかりやすくしてみる!
array.collect do |i|!
i.odd?!
end # => [false, true, false, true, true]!
!
# 1行で書いてみる!
array.collect { |i| i.odd? }!
!
# まだ長い?!
array.collect(&:odd?)!
17. ブロックを受け取るメソッド
collect, map
array = [24, 21, 4, 41, 39]!
!
# 数字の代わりに奇数ならtrue、偶数ならfalseが入った配列を作れ!
array.collect do |i|!
i % 2 == 1!
end # => [false, true, false, true, true]!
!
# もう少しわかりやすくしてみる!
array.collect do |i|!
i.odd?!
end # => [false, true, false, true, true]!
!
# 1行で書いてみる!
array.collect { |i| i.odd? }!
!
# まだ長い?!
array.collect(&:odd?)!
メソッドに& + シンボルを渡すと、
ブロック引数に対して
シンボルで渡した名前のメソッドが呼ばれる。
24. ブロックを受け取るメソッド
# 偶数だけを取り出し、1の位でソートしたい!
[4, 21, 16, 42, 31].select(&:even?).sort{ |i, j| i % 10 <=> j % 10} !
# => [42, 4, 16]
# 偶数だけ取り出したい!
array.select { |i| i.even? } # => => [24, 4]!
!
# こちらもブロックを省略できます!
array.select(&:even?) # => => [24, 4]
array = [24, 21, 4, 41, 39]
# sortメソッド!
array.sort # => [4, 21, 24, 39, 41]!
!
# 1の位でソートしたい!
array.sort{ |i, j| i % 10 <=> j % 10} # => [41, 21, 24, 4, 39]
select
sort
+
=
27. # こんな動作をするselectメソッドを定義してみます。!
select([24, 21, 4, 41, 39]) {|i| i > 10} !
# => [24, 21, 41, 39]!
!
# yieldに引数を渡すことで、ブロックに引数を渡せます。!
def select(array)!
result = []!
array.each do |i|!
result << i if yield(i)!
end!
result!
end
ブロックを受け取るメソッドを定義する
28. # ブロックを引数にして受け取ることも出来ます。!
def select(array, &block)!
result = []!
array.each do |i|!
result << i if block.call(i)!
end!
result!
end!
!
# 引数として受け取ったブロックは他のブロック!
# を受け取るメソッドに渡すことが出来ます。!
def select(array, &block)!
array.select(&block)!
end!
!
ブロックを受け取るメソッドを定義する