ようへいの日々精進XP

よかろうもん

2018 年 03 月 13 日(火)

ジョギング

  • 香椎浜 x 2 周
  • 左膝の内側の違和感

日課

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

夕飯

  • 俺のパスタ
  • 美味しかった

今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (12) ~

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

Q.53 組み込みライブラリ

以下のコードの説明として正しいものを選択してください.

# コード
require 'socket'
p TCPSocket.ancestors.member?(IO)

以下, 解答.

このコードを実行すると「true」が出力される

以下, 解説より抜粋.

  • TCPSocket は IOクラス を継承しており, File クラスなどと同様な操作でソケットを扱うことが出来る

以下, 実行例.

[1] pry(main)> require 'socket'
=> true
[2] pry(main)> p TCPSocket.ancestors
[TCPSocket, IPSocket, BasicSocket, IO, File::Constants, Enumerable, Object, PP::ObjectMixin, Kernel, BasicObject]
=> [TCPSocket, IPSocket, BasicSocket, IO, File::Constants, Enumerable, Object, PP::ObjectMixin, Kernel, BasicObject]
[3] pry(main)> p TCPSocket.ancestors.member?(IO)
true
=> true

Module#ancestors は...

クラス、モジュールのスーパークラスとインクルードしているモジュール を優先順位順に配列に格納して返します.

Array#member? ってドキュメントを見てもないんだけど, おそらく Array#include? の alias なんだろうなあと.

[6] pry(main)> TCPSocket.ancestors.include?(IO)
=> true
[7] pry(main)> TCPSocket.ancestors.member?(IO)
=> true

Q.54 組み込みライブラリ

Thread ライブラリを使用して新たなスレッドを生成するメソッドではないものを選択してください.

以下, 解答.

open

以下, 解説より抜粋.

Threadクラスに新しいスレッドを生成するクラスメソッドは以下の通り.

  • start
  • new
  • fork

以下, Thread クラスのクラスメソッドと, インスタンスメソッド.

[2] pry(main)> Thread.methods(false)
=> [:exclusive,
 :start,
 :new,
 :fork,
 :main,
 :current,
 :stop,
 :kill,
 :exit,
 :pass,
 :abort_on_exception,
 :abort_on_exception=,
 :list,
 :report_on_exception,
 :report_on_exception=,
 :handle_interrupt,
 :pending_interrupt?]

Q.55 コードシンタックス, 文法

以下のコードで誤りのある行を選択してください.

# コード
1: i = 0
2: while i <= 5 do
3:   print i
4:   ++i
5: end

以下, 解答.

4 行目 (++i)

インクリメントする場合には, 以下のように記述する.

i += 1

以下, 実行例.

[1] pry(main)> i = 0
=> 0
[2] pry(main)> while i <= 5 do
[2] pry(main)*   print i  
[2] pry(main)*   i += 1  
[2] pry(main)* end  
012345=> nil

ふむふむ.