次のコード:
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ため、これはそのメソッドの戻り値にもなります。