🖥
RubyエンジニアだけどRuby Silver の対策練習問題を解いてみたい
問題
以下の選択肢のうち、エラーにならずに正常に実行が完了するコードを1つ選択してください。
(a) 1..10.to_s
1から10の範囲を文字列にしている。to_sでエラーが起こるのはnilぐらいで、あとは何でも文字列にできそうな気がするが。
やや安直な気もするけどこれを回答として選んだ。
(b) 10.*(0xFace)
数字の10に掛け算をして、なにかバイト列のようなものを渡してる。
いかにもエラーが起こりそうな気がするけど、これ何?
(c) 10.+("10")
数字の10にメソッドチェーンして + メソッドを実行し、引数に文字列を渡している。いかにもエラーが起きそうだが。
ところでRubyでは数値もオブジェクトであり、 + もメソッドとして実行できそうな気もするけれど。
(d) Time.now.strftime(1999, 12, 11)
現在時刻に対して strftime してるけど、 strftime って何をなにするんだっけw
少なくとも現在時刻に対して特定の日付を渡しているのはおかしいので、エラーが起きそうな気もする、
実行結果
a
1..10.to_s
# ArgumentError: bad value for range
引っ掛けだった…。(?)
どこが何の引数よ。
文法を正せば範囲をStringにもできる
(1..10).to_s
# => "1..10"
b
10.*(0xFace)
# => 642060
よくわからないがこれが正解だった
調べると 0x
に続く Face は16進数の様子。
"%#x" % 64206
#=> "0xface"
"%#x" % 1
# => "0x1"
"%#x" % 2
# => "0x2"
"%#x" % 15
# => "0xf"
"%#x" % 16
# => "0x10"
c
10.+("10")
# TypeError: String can't be coerced into Integer
やはり引数の文字列がネックのようだ
10.+(10)
# => 20
d
Time.now.strftime(1999, 12, 11)
# ArgumentError: wrong number of arguments (given 3, expected 1)
strftimeは文字列の引数を1個だけ渡すやつだった
Time.now.strftime("%m/%d/%Y")
# => "05/05/2022"
結果
Rubyエンジニア惨敗。がんばれ!
チャットメンバー募集
オープンチャット「アジト 〜プログラマの巣窟〜」
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2022-05-05
Discussion