次のコード:
class Avalon
def h
puts "petrezselyem"
end
end
Avalon.new.h
プリントアウトし"petrezselyem"
ます。ただし、次のように入力すると:
puts Avalon.new.h.size
それは与えます
undefined method `size' for nil:NilClass (NoMethodError).
この振る舞いを説明していただけますか?
次のコード:
class Avalon
def h
puts "petrezselyem"
end
end
Avalon.new.h
プリントアウトし"petrezselyem"
ます。ただし、次のように入力すると:
puts Avalon.new.h.size
それは与えます
undefined method `size' for nil:NilClass (NoMethodError).
この振る舞いを説明していただけますか?
メソッドh
は戻りません。"petrezselyem"
出力し"petrezselyem"
ます。だからAvalon.new.h == nil
。
Java ではコンパイル エラーが発生しますが、Ruby のような動的言語では返される型がわかりません。
Kernel#putsのシグネチャを見てください:
puts(obj, ...) → nil
これはputs
常に戻ることを意味し、メソッドnil
の最後のステートメントであるh
ため、これはそのメソッドの戻り値にもなります。