Luaリファレンス 要注意点 ~オブジェクト指向~

インボカント ~暗黙の第1引数self~

 そこで、インボカントが登場する  

 function Account.withdraw ( self, v )
     self.balance = self.balance - v
 end
  多くの言語では、1番目のself(またはthisとなっている言語も多い)の引数は見えなくなっている。

  これはシンタックスシュガーで実現しているものだ。

 function Account:withdraw( v ) ---> 「.」ではなく、「:」を使うと、1番目の引数にselfが自動的に付加されたこととみなされる。

     self.balance = self.balance - v
 end

 呼び出しも「:」を使えば第1引数にオブジェクト自体を代入したことと同じとなる。通常記法も使えるがその場合はやや間が抜けた記述となるだろう。

 a = Account, Account = nil

 a.withdraw(a, 10)  --> 通常記法

 a:withdraw(10) --> シンタックスシュガー。第1引数にオブジェクト自身をインボカントとして渡す形となる。


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS