ようへいの日々精進XP

よかろうもん

2018 年 05 月 17 日(木)

ジョギング

  • 自宅からの香椎宮からの香椎浜で 30 min くら
  • 気温のせいかとてもキツかった...

日課

  • お休み

ここ数日

  • 暑い...
  • 頭痛が続く

竹乃屋

  • 香椎駅近くに出来たので, 夕飯を食べてきた
  • 出来立てホヤホヤのお店で, 店員さんも施設も初々しかった

今日のるびぃ ~ REx - Ruby Examination にチャレンジ (4) ~

REx - Ruby Examination の問題を自分なりにアレンジした上で 1 〜 3 問くらいずつ解いていく. 正直言ってかなり難しい. 尚, irb に動作確認環境は以下の通り.

$ ruby --version
ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux]
$ irb --version
irb 0.9.6(09/06/30)

クラスメソッド

以下のコードを実行するとどうなるか.

class Cls
  class << Cls
    def foo
      'Cls.foo'
    end
  end

  def foo
    'Cls#foo'
  end
end

p Cls.new.foo

'Cls#foo' が表示される

以下, irb で動作確認.

irb(main):013:0* p Cls.new.foo
"Cls#foo"
=> "Cls#foo"

以下, 解説より抜粋.

  • 特異クラス内 class << Cls; end で宣言されたメソッドは特異メソッドになる
  • 特異メソッドは def Cls.foo; end でも宣言することができる
  • 設問では, インスタンスメソッドを呼び出している為, "Cls#foo" が出力される
irb(main):001:0> class Cls
irb(main):002:1>   class << Cls
irb(main):003:2>     def foo
irb(main):004:3>       'foo'
irb(main):005:3>     end
irb(main):006:2>   end
irb(main):007:1> end
=> :foo
irb(main):008:0> def Cls.bar
irb(main):009:1>   'bar'
irb(main):010:1> end
=> :bar
irb(main):011:0> Cls.foo
=> "foo"
irb(main):012:0> Cls.bar
=> "bar"

コマンドラインオプション

Ruby使用可能なオプションではないものを選択する.

-t -f

その他の選択肢について (ドキュメントから引用).

オプション 用途
-l 行末の自動処理を行う. $\$/ と同じ値に設定し, print での出力時に改行を付加する. また, -n フラグまたは -p フラグが指定されていると gets で読み込まれた各行の最後に対して String#chop! を行う.
-p -n フラグとほぼ同じあるが, 各ループの最後に変数 $_ の値を出力するようになる.

全てのコマンドラインオプションについては, 以下のドキュメントを確認すること.

フムフム