ジョギング
- まだ休み
- 筋肉痛が続く...
- 一応, 香椎浜を散歩
日課
- (腕立て x 50 + 腹筋 x 30) x 3
- 一応, やれるところから
夕飯
- 久しぶりに鍋
今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (7) ~
もう何度か解いているけど, Ruby技術者認定試験【Gold】模擬問題 を 3 ~ 5 問くらいずつ解いていく. ポイントは, 問題が何について問われているかがちゃんと理解出来ていること.
Q31. モジュール関数
以下の結果を出力するコードとして__(1)__に当てはまるものを選択してください.
# コード module Mod __(1)__ def func puts "Hello Module" end end Mod.func # 実行結果 Hello Module
module_function
以下, 解説より抜粋.
- 「モジュール名.メソッド名」の形式で呼び出せるメソッドをモジュール関数と呼ぶ
- モジュール関数を定義する場合, メソッドの前に
module_function
を記述する
以下, 実行例.
[5] pry(main)> module Mod [5] pry(main)* module_function [5] pry(main)* def func [5] pry(main)* puts "Hello Module" [5] pry(main)* end [5] pry(main)* end => :func [6] pry(main)> [7] pry(main)> Mod.func Hello Module => nil
Q32. 特異メソッド
以下のコードの説明として正しいものを選択してください.
# コード obj = Object.new def obj.hello puts "hello" end obj.hello Object.new.hello
7 行目で例外 (NoMethodError) が発生する
以下, 解説より抜粋.
- 特異メソッドとは, 特定のオブジェクトにのみメソッドを定義すること
- 特異メソッドは
obj.hello
のようにオブジェクト名.メソッド名
で定義する - インスタンスメソッドは定義されていないので, 7 行目で NoMethodError となる
以下, 実行例.
[8] pry(main)> obj = Object.new => #<Object:0x000055577e857b88> [9] pry(main)> def obj.hello [9] pry(main)* puts "hello" [9] pry(main)* end => :hello [10] pry(main)> obj.hello hello => nil [11] pry(main)> Object.new.hello NoMethodError: undefined method `hello' for #<Object:0x000055577f4a0f48>
Q33. 引数のデフォルト値
以下の結果を出力するコードとして__(1)__に当てはまるものを選択してください.
# コード def foo(__(1)__) puts arg end foo # 実行結果 default
arg = 'default'
以下, 解説より抜粋.
- メソッド定義時に引数にデフォルト値を指定することが出来る
- デフォルト値の指定は
引数名 = デフォルト値
という形式で指定する
以下, 実行例.
[12] pry(main)> def foo(arg = 'default') [12] pry(main)* puts arg [12] pry(main)* end => :foo [13] pry(main)> foo default => nil
ふむふむ.