ようへいの日々精進XP

よかろうもん

2018 年 04 月 16 日(月)

ジョギング

  • 香椎浜 x 2
  • 一生懸命走ったつもりだったけど, イマイチな感じだった

日課

  • (腕立て x 50 + 腹筋 x 50) x 3

黄砂

  • 酷い
  • 洗濯物は部屋干し

曜日をビットで表現する

個人的に産業革命だった.

ケンカ

  • 奥さんとケンカ
  • 仕事がバタついてて, 体調が悪い奥さんに少し八つ当たりしてしまったかもしれない, ごめんなさい

今日のるびぃ ~ Ruby 技術者認定試験 Gold 演習問題を解いていく (26) ~

もう何度か解いているけど, Ruby 技術者認定試験合格教本 の演習問題と模擬試験を数問ずつ解いていく. ポイントは, 問題が何について問われているかがちゃんと理解出来ていること.

Q46. オブジェクト指向

以下のコードを実行すると何が表示されるか.

class A
  @@a = 0
  def initialize
    @@a = @@a + 1
  end
  def A.a
    @@a
  end
end

class B < A
end
A.new
A.new
B.new
B.new
p A.a
  1. 4 と表示される

以下, irb にて確認.

...
irb(main):017:0> p A.a
4
=> 4

以下, 解説より抜粋.

試しにインスタンス化した毎に A.a を呼び出してみる.

irb(main):013:0> A.new
=> #<A:0x00560c60931d50>
irb(main):014:0> p A.a
1
=> 1
irb(main):015:0> A.new
=> #<A:0x00560c6092a258>
irb(main):016:0> p A.a
2
=> 2
irb(main):017:0> A.new
=> #<A:0x00560c60919ac0>
irb(main):018:0> p A.a
3
=> 3
irb(main):019:0> B.new
=> #<B:0x00560c60911988>
irb(main):020:0> p A.a
4
=> 4
irb(main):021:0> B.new
=> #<B:0x00560c60e19e80>
irb(main):022:0> p A.a
5
=> 5

クラス変数の利用は計画的に...

Q47. 組み込みライブラリ

オブジェクトのマーシャリングについて, 適切な記述を全て選べ.

  1. IO クラスのオブジェクトはマーシャリング出来ない
  2. 特異メソッドを持つオブジェクトはマーシャリング出来ない
  3. 無名のクラスやモジュールはマーシャリング出来ない

以下, 解説より抜粋.

  • マーシャリング出来ないオブジェクト
    • システムの状態を保存するオブジェクト (IO, File, Dir, Socket)
    • 特異メソッドを定義したオブジェクト
    • 無名クラスやモジュール

そもそもマーシャリングとは.

  • Ruby のオブジェクトを文字列化してファイルに書きだしたり, 読み込んだりする機能
  • 文字列化したデータをマーシャルデータと呼ぶ

以下, irb での実行例.

irb(main):002:0> m = Marshal.dump({:a => 1, :b => 2, :c => 3})
=> "\x04\b{\b:\x06ai\x06:\x06bi\a:\x06ci\b"
irb(main):003:0> Marshal.load(m)
=> {:a=>1, :b=>2, :c=>3}

Q48. 組み込みライブラリ

以下の実行結果になるように, [ x ] に記述する適切なコードを全て選べ.

require 'json'

h = {'a' => 1, 'b' => 2}
puts [ x ]

以下, 実行結果.

{"a": 1, "b": 2}
  1. h.to_json
  2. JSON.dump(h)

以下, irb での実行例.

irb(main):001:0> require 'json'
=> true
irb(main):002:0> 
irb(main):003:0* h = {'a' => 1, 'b' => 2}
=> {"a"=>1, "b"=>2}
irb(main):004:0> puts h.to_json
{"a":1,"b":2}
=> nil
irb(main):005:0> puts JSON.dump(h)
{"a":1,"b":2}
=> nil

以下, 解説より抜粋.

  • 標準添付ライブラリ json は Hash クラスに JSON 文字列を生成する to_json メソッドを追加する
  • JSON.dump メソッドでも同様の JSON 文字列を生成する

フムフム.