まずは簡単な問題からです。
以下の出力結果を考えて下さい。
def hoge
puts "TechDRILL"
end
hoge
ターミナルで以下の記述が書いてあるファイルを読み込んだ際に出てくる結果は次のうちどれ!?
def offce
yield
puts 'Shuwa residence'
puts 'Shintaiso'
end
offce do
puts 'see you'
puts 'welcome to'
end
(1) see you Shuwa residence welcome to Shintaiso
(2) see you welcome to Shuwa residence Shintaiso
(3) Shuwa residence Shintaiso see you welcome to
(4) welcome to Shintaiso see you Shuwa residence
以下の内容のrbファイルを読み込むとArgumentErrorが起こる。理由を簡潔に述べよ
class Sekiya
def nice
puts 'nice guy'
end
end
class Joji < Sekiya
def introduce(hobby)
puts "I like #{hobby}"
end
end
joji = Joji.new
joji.introduce('playing tennis')
joji.introduce
sekiya = Sekiya.new
sekiya.nice
さらにQ3の問題に加え以下の記述のように編集すると結果どのような出力を得られるか
class Sekiya
def nice
puts 'nice guy'
end
end
class Joji < Sekiya
def greeting(name)
puts "I am #{name} "
end
end
class SuperSekiya < Joji
def greeting(hobby)
super
puts "Nice to meet you!"
end
end
supersekiya = SuperSekiya.new
puts supersekiya
supersekiya.greeting 'Joji'
ターミナルのirbを使って以下を回答してください。
Human = Struct.new(:age, :gender)
human = Human.new(22, 'male')
# 上記の記述後に一行でmaleと出力するには2つパターンがある。その記述を回答せよ
Q1 Procオブジェクトとは何か?
Q2 Proc.newで作成されたオブジェクトがとる引数は以下の挙動をします。〇〇〇の部分を回答しましょう
・仮引数の数より多くの引数が渡された場合は〇〇〇する
・引数の数が足りない場合、足りない引数には〇〇〇が渡される
・複数の仮引数が定義されている時に配列が〇〇〇と展開される
Q3 クロージャとは何か一言で説明してください。またRubyにおいてProcオブジェクトとクロージャの関係性について回答してください。
例)
def sushi
review = 'very good!!'
Proc.new{ review }
end
food = sushi
review = 'so so'
food.call #=> "very good"