0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

Ruby 学習アウトプット2

はじめに

初学者の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 methodto_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クラス

とりあえず、そのへんを固めていきたいです。

以上になります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?