ruby's scope gate は、 class / module / def という話をしました。
つまり ブロックはクロージャであり、以下のようにできる
def hoge
x = 'outer'
for i in [3,4,5] do
return x
end
end
hoge
=> 'outer'
第1問
def hoge
for i in 3..5 do
x = 'x-men'
end
return x
end
hoge #=> これは?
第2問
def hoge
3.times do
x = 'x-men'
end
return x
end
hoge #=> これは?
第3問
var hoge = function(){
function inner(){
x = 'x-men'
}
inner()
return x
}
hoge() //=> これは?
解答
- x-men
- error
- x-men
3 はひっかけです。var x
で宣言していれば、外からは呼べません。
おまけ
true が返る行をすべておしえてください。
hoge = false && true
hoge = false and true
hoge = false || true
hoge = false or true