問題タブ [structural-typing]

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.

0 投票する
1 に答える
11286 参照

scala - Scalaのパラメーターに複数のタイプを受け入れる

ObjectAとObjectBの2つのオブジェクトがあり、どちらもupdate()メソッドを使用しています。ObjectAまたはObjectBのいずれかを受け入れる関数を作成したい(ただし、他のタイプは受け入れない)。概念的には、これが私がやろうとしていることです。

この問題を解決する方法は他にもあると思いますが(たとえば、update()メソッドの構造型付け、共通基本クラスなど)、Scalaでこの方法を実行できるかどうかという質問があります。その場合、構文はどうなりますか?そして、これは何と呼ばれていますか?

0 投票する
1 に答える
158 参照

scala - Traversable の構造型付け

私はこの方法を持っています:

しかし、私はそれを次のように呼び出すと:

scala> foo(List(1,2,3))

私は得る:

しかし、私がこのようなことをすると:

できます。

私はおそらく見落としているほど基本的なものを見逃していますが、どうすればこれを機能させることができますか?

0 投票する
1 に答える
233 参照

scala - Structural types and primitives

I was playing around with Scala's structural types when I discovered what looks like a bug to me. Here is my code:

And I got this error:

First, I don't know why this isn't working. Second, it's weird that the code compiles just fine and throws an exception at runtime saying that the method doesn't actually exist.

Does anyone have an explanation for this?

0 投票する
2 に答える
451 参照

scala - ここで型推論が機能しないのはなぜですか?

この問題は私が書いているモジュールで発生しましたが、同じ動作を示す最小限のケースを作成しました。

Minimal問題は、コンパイラが( )の内部パラメーターを把握することに成功しIntた後、他の出現をTtoNothingに設定することです。これは明らかに一致しませんapplyT最初のパラメーターを削除すると、2 番目のパラメーターが T が定義されていないと不平を言うため、これらは間違いなく同じです。

コンパイラが最初のパラメータを推測できないことを意味するあいまいさがありますか、それともバグですか? これをうまく回避できますか?

詳細情報: このコードは、シンタックス シュガーの試みの簡単な例です。元のコードは、 a がベクトルである|(a)|のモジュラスを平均化しようとします。書くよりもa明らかに優れていますが、残念ながらこれを簡単にするために使用することはできません。|(a)||[Float,Vector3[Float]](a)|unary_|

実際のエラー:

推論された型引数 [Nothing,Minimal[Int]] は、メソッド apply の型パラメーターの境界 [T,X <: Sugar.S[T]] に準拠していません

0 投票する
1 に答える
116 参照

wpf - イベントメンバーの型制約を記述する方法は?

WPF コントロールには、同じインターフェイスまたは基本クラスを共有せずに同じ名前を持つ多くのイベント メンバーがあります。F# の型制約により、同じメンバーを持つすべてのオブジェクトに対して機能する関数を記述できます。次に、イベント メンバーの型制約を記述することができれば、多くのコントロールに対して同じ方法でプロパティ設定を容易にするカリー化された関数を記述することができます。

しかし、上記のコードは動作しません. イベントメンバーの型制約を書くことは不可能だと思います.. それは小さな問題であり、小さな問題をすべて言語機能で解決すると、言語は非常に複雑になり、誰も使用できなくなります! (今では F# は強力でシンプルなようです)

次に、この問題を解決する別の方法があれば知りたいです。

0 投票する
1 に答える
427 参照

scala - リフレクションを使用しない Scala で `??` (C# の null 合体演算子) を実装することは可能ですか?

C# null 合体演算子 '??' の実装をどこかで見つけました。

a ?? bその後、 which meansのように使用できますif (a == null) b else a

クラス ファイルを逆コンパイルした後、リフレクションを含むコードが生成されることがわかりました (Scala 2.8.1)。

リフレクションを生成する理由と、リフレクションを生成しないようにそのコードを変更することは可能ですか?

0 投票する
2 に答える
1630 参照

c# - TypeScriptの「インターフェイスの構造型」とは

TypeScriptに関する彼のブログ投稿で、MarkRendleは次のように述べています。

「インターフェイスの構造型付け。C#でそれができると本当にいいのですが」

それはどういう意味ですか?

0 投票する
3 に答える
880 参照

type-inference - 静的、構造型、グローバル型推論を備えた命令型言語

Haskellのような言語が静的に型付けされ、型推論を持っていることを私は知っています。しかし、グローバル型推論を備えた非関数型言語はありますか。これは、型推論と構造型を備えたCのようなものに相当します。

0 投票する
1 に答える
516 参照

scala - 構造サブタイピングの反映

val s: String関数の外部から反射を使用するタイプを取得できますfか?

0 投票する
1 に答える
8855 参照

scala - マクロから匿名クラスのメソッドを使用して構造型を取得する

いくつかの型メンバーまたはメソッドを持つ無名クラスを定義し、それらのメソッドなどを持つ構造型として静的に型指定されたそのクラスのインスタンスを作成するマクロを書きたいとします。これは 2.10 のマクロ システムで可能です。 0 であり、型メンバー部分は非常に簡単です。

(私のメソッドを提供ReflectionUtilsする便利な特性はどこにありますかconstructor。)

このマクロを使用すると、匿名クラスの型メンバーの名前を文字列リテラルとして指定できます。

適切に入力されていることに注意してください。すべてが期待どおりに機能していることを確認できます。

次に、メソッドを使用して同じことをしようとします。

しかし、試してみると、構造型が得られません。

しかし、そこに匿名クラスを追加すると、次のようになります。

できます:

これは非常に便利です。たとえば、このようなことができますが、なぜ機能するのかわかりません。型メンバーのバージョンは機能しますが、機能しませんbarこれは定義された動作ではない可能性があることはわかっていますが、意味はありますか? マクロから構造型 (メソッドを含む) を取得するよりクリーンな方法はありますか?