Rubyの演算子とそれぞれの関連性の非常に良いテーブルhereがあります。この表によれば、かなりの数の演算子が連想されていますが、これは特に役に立ちません。左連想演算子を正しい連想に変更する方法はありますか?私のコードが設定されている方法はx * x * x
ですが、x * (x * x)
が動作します。これは、私の具体的な実装であるx * x
が配列を返すためです。このため、配列にはメソッドに渡されるパラメータを指定できますが、メソッドを呼び出すオブジェクトにすることはできません。配列クラスの*
メソッドをオーバーライドすることはできません。なぜなら、デフォルトの機能が使用されているので、サルのパッチ適用はオプションではないためです。私のクラスの*
演算子の結合性を変更する方法はありますか?ほとんどすべての言語のようにオペレータの関連付けを変更することはできますか?
0
A
答えて
0
号
、Rubyはあなたが演算子の結合規則を変更することはできません。クラスNumeric
のインスタンスの場合(一部例外Ioke、SEPH、ハスケル、要塞、そしておそらくPerl6のです。)
は、算術演算子の結合性を変化させた外観を与えるために悪用される可能性がtype coercion protocolがあり、それはです本当に脆弱なハックで、プロトコルが意図しているものではありません。
関連する問題
- 1. Entity Frameworkでテーブルとビューを関連付けることはできますか?
- 2. サブドメインのみをAmazon Cloudfrontに関連付けることはできますか?
- 3. バリデータを複数のルールセットに関連付けることはできますか?
- 4. wso2のロールにアトリビュートを関連付けることはできますか?
- 5. カスタムメタデータをALAssetに関連付けることはできますか?
- 6. オペレータをラムダ関数に関連付けるマップ
- 7. PyCharmはファイルタイプの関連付けを変更します
- 8. ファイル拡張子に関連付けられたアイコンを変更することはできますが、置き換えることはできません。
- 9. モデルに条件付き関連付けを作成することはできますか?
- 10. xcode 4ファイルの関連付けを変更する
- 11. ActiveRecordの関連付けから特定の列のみを要求することはできますか?
- 12. ユーザとプロフィールのモデルを関連付けることができません
- 13. 信頼できるローカルメタデータをリモートファイルに関連付けますか?
- 14. どうすればこの関連付けを実装できますか?
- 15. Azure関連付けられたディレクトリ 'None'を変更する
- 16. ASP.NET FormsAuthenticationクッキーをセッションIDに関連付けると、より安全にすることはできますか?
- 17. アプリケーションプールとappcmdを関連付けます
- 18. この2つのファイルをemacsでどのように関連付けることができますか?
- 19. sshのユーザー名とgitをsshを介して関連付けることはできますか?
- 20. ":has_many"という関連付けは変更できません。私は3つのテーブルで働いている
- 21. クライアントを動的にsensuで関連付けることは可能ですか?
- 22. このような関連付けは可能ですか?
- 23. TFS 2010は、もはやとチェンジセットを関連付けること
- 24. has_manyとの関連付けの作成または更新
- 25. モデルの関連付けをYAML形式に変換できますか?
- 26. tiffファイルとtiffファイルのファイルの関連付けを変更するPowerShellスクリプト
- 27. ページレイアウトで関連リストを更新することはできますか?
- 28. Eclipse IDEでプロジェクトをランタイムサーバーに関連付けることができません
- 29. JMSメッセージ - キューと関連付けます
- 30. エンティティクラスのシードデータをそのクラスの宣言に関連付けることはできますか?
私は、Rubyのパーサによって結合性が扱われると思うので、あなたのクラスがどのように定義されていても 'x * x * x'は常に' x。*(x。*(x)) 'と解釈されます。 '。*'以外の方法を使用できますか? 'x * x'(または' x.some_method(x) ')は配列以外の何かを返すことができますか?あなたがデフォルトの動作だけを残すことができるように、少なくとも「Array」のサブクラスで? – Max
@Max私が実際に持っているのは 'def method_missing(method、* args);です。 [self、method.to_sym、* args] .flatten;私のクラスでは終わりです。私は、これを処理する配列サブクラスを作成するのが最善の策だと思います。提案していただきありがとうございます! –