1

次のコードは、本ExceptionalRubyからのものです。

starts_with_a = Object.new

def starts_with_a. ===(e)
    /^A/ =~ e.name
end 

新しいオブジェクトが割り当てられている最初の行をコメントアウトすると、次のstarts_with_aエラーが発生します。

`<main>': undefined local variable or method `starts_with_a' for main:Object (NameError)

starts_with_a質問1:そのエラーを回避するために、なぜ新しいオブジェクトを割り当てる必要があるのですか?

また、メソッド定義starts_with_aには、の.前にa===がありますが、変数にstarts_with_aはありません。.メソッド定義でそれを省略した場合、エラーが発生します。

質問2:それで何が起こっているの.ですか?なぜ必要なのかなど。

4

1 に答える 1

0

を使用して、オブジェクトにdef starts_with_a. ===(e)シングルトンメソッドを定義します。オブジェクトとメソッドの間は、それがそのオブジェクトで定義されたメソッドであることを示します。そのようなオブジェクトがまだ作成されていない場合、シングルトンメソッドを定義することはできず、エラーが返されます。===starts_with_a.

于 2012-12-29T06:30:44.427 に答える