###はじめに
初学者のrubyシルバー取得に向けての学習アウトプットです。
文章もただただ、タコ殴りしてるだけなので、温かい目で見守っていただけると幸いです。
##今回の教材
###REx
REX??恐竜???
T-REXっていうバンドもいますよね。
否!!
https://www.ruby.or.jp/ja/certification/examination/rex
受ける度に問題の内容が変わります。8割共通で残りの2割が入れ替わる。
もちろん以前の問題を再び受け直すことも可能。解説も割と書いてある。
スマホからも受けられて便利。そして無料。
githubアカウントとの連携が必要。
####やってみて
100点中、52点。。。。。まだ先は長い。
ということで復習しましょう
####復習(復讐)
- 次のコードのXXXXに記述するとエラーが発生するコードはどれですか?
puts XXXX
"0x90".hex #=>144
'90' #=>"90"
0b2 #=>numeric literal without digits(エラー)
'80'.oct #=>0
0xは16進数を表すプレフィックスです。
String#hexは文字列を16進数で解釈して、整数で返します。16進数で解釈できない場合は0を返します。
0bは2進数を表すプレフィックスです。
今回の選択肢0b2は2進数ではありません。0b10が正しい定義です。
String#octは文字列を8進数で解釈して、整数で返します。8進数で解釈できない場合は0を返します。
今回の選択肢”80”は8進数ではありません。"100"が正しい定義です。
上記解説なのですが、○進数に関して全然分からないというか、義務教育の過程で習ったのかどうかも、、、ってことなのでここは分かるようにしときたいです。
この解説で理解できなかったので○進数について学びなおします。とほほ。
- 次のプログラムを実行するとどうなりますか?
$val = 0
class Count
def self.up
$val = $val + 1
$val == 3 ? true : false
end
end
[*1..10].any? do
Count.up
end
p $val
#以下のどれが表示されるか
10
1
0
3
答えは3です。
[*1..10].any?
こちらは[1..10]
だとRangeクラスで範囲になりますが、[*1..10]
で[1,2,3,4,5,6,7,8,9,10]
のArrayクラスの配列になります。そしてany?
でブロックが真が返したときは繰り返しを中断してtrueを返します。ブロックの戻り値がすべて偽であるとき、あるいはレシーバが空であるときにはfalseを返します。
繰り返しが止まるのは3回目の繰り返し、つまり$valが3になった時点です。
この問題のプログラムを実行すると、3が表示されます。
- 次のコードを実行するとどうなりますか
hoge = "a".to_h
puts hoge.class
Stringと表示される
Arrayと表示される
Hashと表示される
エラーになる
答えはエラーになるです。
undefined method
to_h' for "a":String (NoMethodError)`
- 次のコードを実行するとどうなりますか?
10.times{|d| print d == 3..d == 5 ? "T" : "F" }
シンタックスエラーとなる
FFFFFFFFFF と表示される
FFFTFTFFFF と表示される
FFFTTTFFFF と表示される
答えはFFFTTTFFFF と表示される
なのですが、最初解説見ても全然分からなくてですね。
特にd == 3..d == 5
この部分がd == 3..d
????そんで3..d == 5
??????
となっていたのですが、実はこれ(d == 3)..(d == 5)
として考えれば、なんの問題もなく理解できました。範囲式
でググればOKです。
####やってみて
1回目50点、2回目は80点超えではありました。
今の所、自分ができていないのでは○進数系の問題、ヒアドキュメント、Dateクラス、IOクラス
とりあえず、そのへんを固めていきたいです。
以上になります。