問題タブ [implicit-conversion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala の暗黙的な変換に関する質問があいまいでないルール
Scalaの暗黙的な変換メカニズムを使用した次の状況を誰かに説明してもらえますか。コードがあります:
このコードは「val」を出力します。しかし、2行目にコメントすると:
コードは「def」を出力します。
したがって、この状況では両方の暗黙的な変換 (x と y) が可能です。あいまいさのない規則があります。挿入できる変換が他にない場合にのみ、暗黙的な変換が挿入されます。この規則によれば、このコードはまったくコンパイルされるべきではありません。しかし、コードは正常にコンパイルおよび実行されます。何がわからないのですか?
ありがとう。
scala - Scalaの暗黙による「ボクシング」プリミティブ型のオーバーヘッド
Javaのようなクラスが必要だとしますDate
。その唯一のデータメンバーは、1970年以降のミリ秒を表すlongです。
新しいScalaタイプを作成するだけで、パフォーマンス上のメリットが得られるでしょうか。
次に、intを使用して行われるように、暗黙的な変換を使用してメソッドを追加できますRichInt
。プリミティブ型のリッチクラスへのこの「ボクシング」には、オーバーヘッド(クラスの作成)が含まれますか?基本的には静的メソッドを使用できます
そして、型システムに、コード内に表示されたときに適用する必要があることを理解さd addMonth 5
せます。
編集
書き込みによって作成したエイリアスtype PrimitiveDate = Long
は、scalaコンパイラによって強制されていないようです。Scalaで強制型を作成する唯一の方法は、Longを囲む適切なクラスを作成することですか?
プリミティブ型の強制型エイリアスを作成できると思いますか?
c# - C#でボックス化された構造体を直接型キャストするにはどうすればよいですか?
私は、さまざまな測定単位 (メートル、フィート、インチなど) を表す構造体の名前空間を持っています...合計で 12 個あり、T4 テンプレートの厚意により生成されました :) 。
各構造体には、値を他の測定値型にキャストすることをサポートする暗黙のキャスト演算子が含まれているため、次の構文は有効です。
さらに嬉しいことに、任意の測定単位を保持できるDistanceという包括的なクラスがあり、測定値との間で暗黙的にキャストすることもできます...
.NET フレームワーク標準に従って、すべての文字列の書式設定と解析は、ICustomFormatter を実装する外部の FormatProvider によって処理されます。残念なことに、これは値が Format メソッドに渡されるときにボックス化されることを意味し、Format メソッドは、オブジェクトに作用する前に、すべての既知の測定タイプに対してオブジェクトをテストする必要があります。内部的には、Format メソッドはとにかく測定値を Distance 値にキャストするだけなので、ここで質問が来ます....
質問:
これに対する解決策はありますか、それとも値型の解決できない欠点の 1 つにすぎませんか?
PS:この投稿を確認しました。質問は似ていますが、探しているものではありません。
sql - mysql日時の比較
たとえば、次のクエリは正常に機能します。
しかし、これは明らかに「文字列」比較を実行しています-特に「日時」比較を行うMySQLに組み込まれた関数があるかどうか疑問に思いました。
c++ - cout を使用して、ユーザー定義型から std::string への自動キャストを取得することは可能ですか?
質問のように、クラスで文字列演算子を定義すると:
そして、私はそれを使用します:
明示的なキャストではすべてがうまくいきますが、(文字列) を削除すると、コンパイラは std::string で宣言されたキャスト演算子が必要であると言います。私のタイプを自動的にキャストするべきではありませんか? 解決済み: operator<< (ostream& os, const Literal& l) をオーバーロードしています。
c# - 2 つの暗黙のキャストを伴う演算子関数 + は機能しません
一部を ginac (www.ginac.de) から C# に移植しようとしています。しかし、私はこれに遭遇しました:
正しい順序は次のとおりです: 暗黙的にシンボル->基本->ex、次に数値->基本->exをキャストし、次にex演算子+(ex,ex)関数を使用します。
暗黙のキャスト関数と演算子関数のルックアップはどの順序で行われますか? これを回避する方法はありますか?
c++ - テンプレート引数のメンバーへのポインタをダウンキャストできないのはなぜですか?
ベースメンバーへのポインターを作成すると、通常は派生メンバーへのポインターに変換できますが、最初のテンプレート引数が2番目の引数に影響を与える以下のBuzzのようなテンプレート内で使用する場合は変換できません。私はコンパイラのバグと戦っていますか、それとも標準はこれが機能しないことを本当に義務付けていますか?
c# - C#リストへの暗黙的なキャストランタイムエラーを返します
内部リストを使用する次のようなクラスがあります。
MyList<object>
を受け取る関数に渡そうとするとList<object>
、InvalidCastExceptionが発生します。なんで?
c++ - std::stringがconstchar*への変換を提供しないのはなぜですか?
これは、より多くのポリシーまたは歴史的な質問です。std::stringにconstchar*変換を提供しないことが決定されたのはなぜですか?誰かがprintf( "%s"、s)を実行し、それが自動的に変換されると信じる恐れはありましたか?この問題についてオープンな議論はありますか?
c++ - オーバーロードされた演算子で暗黙の変換はありません
d1 + 4
4 + d1
4は暗黙的にGManに変換できますが、機能しません。なぜそれらは同等ではないのですか?