みなさま、食後のrubyクイズでございます
問題
第1問
:hoge.size
# => ?
第2問
!true
# => ?
! true
# => ?
第3問
[3,4,5].map do |hoge|
next hoge if hoge>4
end
# => ?
array = [3,4,5]
array.map do |hoge|
next hoge if hoge>4
end
puts array
# => ?
.
.
.
.
.
.
答え
第1問
:hoge.size
# => 4
シンボルをsizeにしたら、文字数が返ってきます
第2問
!true
# => false
! true
# => false
!true
は演算子の"!"でtrueがfalseになり、
! true
はメソッドの"!"でtrueがfalseになります。
「! true
はメソッドの"!"を使える」と思っていたのですが、どうやら違うみたいです。
なぜスペース空けてもできるのか、鋭意調べ中でございます。少々お待ちください
とりあえず、スペース空けてもfalseになるよとだけ。
第3問
[3,4,5].map do |hoge|
next hoge if hoge>4
end
# => [nil, nil, 5]
array = [3,4,5]
array.map do |hoge|
next hoge if hoge>4
end
puts array
# => [3, 4, 5]
map
は返り値がないとnilになってしまいます。
そして、map
は元の配列には影響を与えません。
レシーバの配列を変更したい場合はmap!
を使いましょう。
array = [3,4,5]
array.map!{|hoge| next hoge if hoge>4}
array
# => [nil, nil, 5]
みなみなさま
Have a nice day !