答えて
予約語self
は、使用されているメソッドの現在の受信者を参照する擬似変数です(割り当てることはできません)。反対側では、yourself
は、どのオブジェクトにでも同じオブジェクトを取得できるメッセージです。
yourself
の実装では、私はちょうど説明したようにメッセージyourself
が振る舞うことを意味
yourself
^self
です。異なる何かを答えるかもしれません
^receiver
msg1;
msg2;
yourself
msg2
場合:
yourself
が存在する理由は、あなたが得られた発現は、受信機と答えることを確認するために最後のメッセージとしてそれをどこに置いたか、メッセージのカスケードをサポートすることですreceiver
yourself
メッセージを追加してその回答を無視し、代わりにreceiver
を返すことができます。もちろん、あなたが書き込むことによって同じ結果を達成している可能性が:ので、これらの二つの例の単純さの
receiver
msg1;
msg2.
^receiver
、利点がどうなるかを理解するのは難しいかもしれません。しかし、receiver
は変数ではなく複雑な式であると考えてください。
^(self msg: arg1 arg: arg2)
msg1;
msg2;
yourself.
yourself
を使用せずに、あなたは同じことを達成するための受信機の値を保存するために一時的に追加する必要があります:少し冗長である
| answer |
answer := self msg: arg1 arg: arg2.
answer
msg1;
msg2.
^answer
を。
要約すると、self
は現在の受信者を参照する予約語であり、yourself
は単なる便宜のための通常の方法です。
self
は、オブジェクトの同義語です。具体的には、メソッドを呼び出したメッセージの受信者です。これはメソッドの本体内で使用されます。
yourself
は、メッセージの受信者を返すオブジェクトに送信できるメッセージです。
anObject yourself
anObject
を返します。
yourself
は、メソッド本体内でメッセージカスケードの末尾によく使用されます。
あなたはメソッドからの戻り値は、受信機になりたいが、カスケード中の最後のメッセージは何か他のものを返し、あなたはどちらか書くことができる:
self aMessageReturningTheReceiver;
aMessageReturningTheArgument: anArgument .
^self
または
self aMessageReturningTheReceiver;
aMessageReturningTheArgument: anArgument;
yourself
- 1. ANSI SmalltalkとSmalltalk-80の違いは何ですか?
- 2. プロトタイプで自分のコードに間違っていることは何ですか?
- 3. 象徴的な分化と自動分化の違いは?
- 4. 自分自身にループバックする単語は何ですか?
- 5. 部分法と部分法の違いは何ですか?
- 6. WebService:自分のPCとサーバーの違い
- 7. テキスト分析対自然言語処理違いは何ですか?
- 8. 区分定数と区分区分平滑の違いは何ですか?
- 9. クラスは自動的に自分自身の友人ですか?
- 10. Java:自分のAPIでイベント通知のオプションは何ですか?
- 11. Java - 自分自身を閉じて自分のソフトウェアカーネルパニックなどの自分自身を再起動するにはどうすればいいですか?
- 12. は自分のアプリケーションで
- 13. コマンドラインXRandRと自分のコードの相違
- 14. はmy.confの自分の[セクション]ですか?
- 15. 分裂と征服の違いは何ですか?分枝と縮小は何ですか?
- 16. とjava.lang.ClassCastException:org.apache.tomcat.dbcp.dbcp.PoolableConnectionは自分のアプリケーションでのoracle.jdbc.OracleConnection
- 17. 自動生成と自動インクリメントのビルド番号の違いは何ですか?
- 18. Android:ユーザーは自分のアプリで何をしますか?
- 19. フラグメント内で自分のコードが間違っていますか?
- 20. 自分自身とこれをPythonで使う場合の違い
- 21. 自分のアンドロイドデバイスが自分自身をリセットしているのはなぜですか?
- 22. C#:リポジトリパターン、標準インターフェースはありますか、自分で自分自身を調理すべきですか?
- 23. 自分のコードでNVidia FxAAを使用する:ライセンスモデルとは何ですか?
- 24. 分度器のwaitForAngularEnabledとbrowser.ignoreSynchronizationの違いは何ですか?
- 25. Railsのメールは自分自身で送信しています
- 26. キュウリと分裂器の違いは何ですか?
- 27. 分散コンピューティングとクラウドコンピューティングの違いは何ですか?
- 28. なぜ私は自分のスレッドで自分のUIを更新できないのですか?
- 29. 自分自身
- 30. 自分のアプリケーションで