blog.waterlow.work

Ruby, Rails, js, etc...

【Ruby】Goldリベンジならず…。

再び落ちてしまいました。
前回はひさびさの不合格で何ができなかったとか全く覚えていませんが、今回は迷った問題をメモしておいて結果が出た後暗記するという作業をしました…。なので今回の不合格は次の合格への糧になるはずです!

点数:72点

いろんな人のブログを見て回りましたが、割りと2回落ちは普通にあるようですね。といいつつ自分を慰めてみます。

復習
RDoc

ソースコードから仕様書をhtmlで作成してくれます。毎回0〜1問出題されます。
自分が出題されたのは「以下から正しい記述を…」の形式で複数選択でした。

  1. http:から始まる文字列は自動的にリンクになる
  2. 「_単語_」と書くと単語がボールドになる
  3. :nodoc:と書くと読み込まれない
  4. 番号と-で番号付きリスト

正解は1と3。_で囲むとイタリック、*で囲むとボールド、+で囲むとタイプライター。あと番号付きリストは番号とドットでできます。あと=見出し。行頭に*か-で番号なしリスト、[list1]とかlist1::でラベル付きリストが出ます。覚えることが多い!

0.1足してくと結果ずれるよ問題

衝撃の事実でした。論点はローカル変数のスコープでもブロックに渡すパラメータの省略でもなかったのです。

val = 0
10.times do
  val += 0.1
end
p val #0.9999999999999999

2進に変換するときに循環小数になってしまうらしいです。知らなかった恥ずかしい…
Rubyで浮動小数点数の加算減算がずれないようにする | 秋山ブログ

可変長引数

可変長引数を渡す場合は*をつけます。デフォルト値は指定できません。*は正規表現では0個以上を表すので、可変長引数のメソッドは引数なしでも実行できます。

def p_ary(*ary)
  p ary
end
p_ary #=>[]
undef、alias等のメソッドはシンボルかメソッド名を引数に。

クラスメソッドを消したいときはクラスがselfになる状況に入らなければいけません。

do-endと{}の違い

これはかなりマニアックですね。

3.downto(0) do |i| p i end
3.downto 0 do |i| p i end
3.downto(0) { |i| p i }
#3.downto 0 { |i| p i }
#最後のだけは実行できない

なんでかは全くわかりませんが…。結合度が違うらしいです。
Rubyのdo endと{ }は違うらしいよ。 - このブログは証明できない。

ソケットライブラリにあるクラスを全部選べ

知らなかったです…。

環境変数の参照の仕方

以下のように変数名で参照します。

ENV['NAME']

半分ぐらい復習できたのでここで一旦区切ります。
懲りずに来週もう一度受けようと思います!次は受かりたいなあ…。