問題は四択で10問ずつ合計60問あります。各問題には解答がついていますが、はじめは閉じた状態でトライしてみてください。
10問毎に「終了/採点」ボタンをクリックすると採点ができます。次の10問へお進みください。繰り返しトライすることも可能です。
[コード] module Mod __(1)__ def func puts "Hello Module" end end
Mod.func
[実行結果] Hello Module
解説
「モジュール名.メソッド名」の形式で呼び出せるメソッドをモジュール関数と呼びます。モジュール関数を定義する場合、メソッドの前に「module_function」を記述します。
[コード] 1: obj = Object.new 2: def obj.hello 3: puts "hello" 4: end 5: obj.hello 6: Object.new.hello
解説
Rubyには特定のオブジェクトにのみメソッドを定義することができます。これを特異メソッドと呼びます。特異メソッドは問題文のように「オブジェクト.メソッド名」のように定義します。
[コード] def foo(__(1)__) puts arg end foo
[実行結果] default
解説
メソッド定義時に引数にデフォルト値を指定することができます。デフォルト値の指定は「引数名=デフォルト値」という形式で指定します。
[コード] class Foo def foo puts "foo" end end class Foo def bar puts "bar" end end
解説
Rubyにはオープンクラスという特徴があり、一度定義したクラスに後からメソッドなどを追加することができます。
解説
モジュールは名前空間を提供し、includeによってクラスにMix-inして使用することができます。
解説
メソッド定義時にpublic、protected、privateの3つのアクセス制限を指定することができます。アクセス制限を指定しなかった場合は、デフォルトでpublicになり、メソッドが公開されます。
解説
メソッドの引数を固定せずに可変長にしたい場合、「*引数」という形式で指定する必要があります。
解説
ブロックを受け取る場合、「&引数」という形式で指定する必要があります。
[コード] class Foo attr_accessor :foo end
解説
attr_accessorはアクセスメソッドを定義するメソッドです。以下のコードは、すべて同様な意味になります。
[コード1] class Foo attr_accessor :foo end
[コード2] class Foo attr_reader :foo attr_writer :foo end
[コード3] class Foo def foo @foo end def foo=(foo) @foo = foo end end
[file1.rb] $var += 1
[file2.rb] $var = 0 require "file1.rb" require "file1.rb" puts $var
解説
requireはライブラリを読み込むメソッドです。同一のファイルを指定しても2回読み込まれません。