0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RubyエンジニアだけどRuby Silver の対策練習問題を解いてみたい

Last updated at Posted at 2022-05-04

問題

以下の選択肢のうち、エラーにならずに正常に実行が完了するコードを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オープンチャットもご利用ください。

Twitter

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?