先日、Rubyの試験に行ってきました。結果は不合格で落ち込んでいます。
と、言っても落ち込んでばかりはいられないので、復習をしようと思い
問題を思い出しながら検証作業をしています。以下のような問題が出たと思います。
(このコードで絶対合っているかと問われれば絶対的な自信はありませんが。。)
self.class の前の表示するメソッドはputsだったと記憶しています
以下のコードを実行した結果を選択してください。
class Foo
puts self.class
def foo
puts self.class
end
end
p Foo.new.foo
- Foo
Foo - Foo
nil - nil
nil - nil
Foo
ぼくは、1.と回答しましただ、
お家に帰ってirbしてみると、どうも正解は2.のようです。。
irb(main):001:0> class Foo
irb(main):002:1> puts self.class
irb(main):003:1> def foo
irb(main):004:2> puts self.class
irb(main):005:2> end
irb(main):006:1> end
Class
=> :foo
irb(main):007:0>
irb(main):008:0* p Foo.new.foo
Foo
nil
=> nil
でも合点がいかないので、puts を p に変えて試したところ、全く違う結果がでました。
irb(main):001:0> class Foo
irb(main):002:1> p self.class
irb(main):003:1> def foo
irb(main):004:2> p self.class
irb(main):005:2> end
irb(main):006:1> end
Class
=> :foo
irb(main):007:0>
irb(main):008:0* p Foo.new.foo
Foo
Foo
=> Foo
p と puts でこんなにも結果が違うものなのでしょうか?
それと、この問題の意図からして正解はどうあるべき(どちら)なのでしょうか?
もしくは、覚えていたという問題は完璧な誤りでこうであるはずだ!というのがあれば教えて頂きたいです。
こんな変な質問ですが、おつきあい頂ける方、ご指導よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/24 23:41