structural-typing

    14

    1答えて

    ObjectAとObjectBという2つのオブジェクトがあり、いずれもメソッドupdate()を使用しています。私は、ObjectAまたはObjectBのいずれかを受け付ける関数を記述したいと思います(他の型はありません)。概念的には、これは私がしようとしているものです: def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = { o

    6

    2答えて

    この問題は私が書いているモジュールで生じましたが、私は同じ挙動を示す最小限のケースを作りました。 class Minimal[T](x : T) { def doSomething = x } object Sugar { type S[T] = { def doSomething : T } def apply[T, X <: S[T]] (x: X) = x

    0

    1答えて

    は、私はこれを表現するための構造型を定義することはできますか?以下は、静的性質を捕捉しないので、タイプマッチしません。もちろん val fooBar: { def Foo: Bar } 、私は必ずしも必要であれば、私がやるものだ&何か他のもので、この呼び出しをラップすることができます。しかし、このメソッドの型を定義する構文はありますか?

    180

    1答えて

    いくつかの型メンバーまたはメソッドで匿名クラスを定義するマクロを記述し、そのクラスのインスタンスを構造型として静的に作成するとします。これらの方法、等これは、2.10.0マクロシステムで可能であり、型部材の一部が非常に容易である: object MacroExample extends ReflectionUtils { import scala.language.experimenta

    10

    1答えて

    構造型の型付けについて調べているうちに、私はhow interfaces in Go are translated to method lookup tables at runtimeという次の投稿を見つけました。この記事で説明したプロセスは、Scalaのオプションの構造型システムとJava言語のホワイトオーク拡張について記述されているreflective and generative techn

    0

    1答えて

    私は既存の抽出子を再利用して作成したいと思います。 A => Option[B]はB => Option[C]と完全に一致します。 しかし、私は混乱しています。どのようにコード内にそのような関係を表現することができますか。 明白な方法は、正当な理由のためには使用できません。 type Extractor[F,T] = { def unapply(from : F) : Option[T]

    11

    3答えて

    typeclassesとAbstract Data Typesの違いは何ですか? これはHaskellのプログラマのための基本的なことですが、私はScalaのバックグラウンドから来ており、Scalaの例に興味があります。私が今見つけることができる最高のものは、型締めが「開いている」こととADTが「閉じている」ということです。また、タイプクォーターと構造タイプを比較して対比することも役立ちます。

    0

    1答えて

    typescriptは構造型の型付けメカニズムを持っています。 と、次のように定義された1:あなたはReadonlyCountryタイプのオブジェクトを返す場合 class ReadonlyCountry { readonly id: string; readonly name: string; } タイピングシステムは、衝突を示すだろうことを、私はあなたがこのようなク

    6

    3答えて

    私はこれは罰金コンパイルされますが、私はそれを使用しようとすると、これらの type HasApply1 { def apply[A, R](argument: A): R } の両方のコンパニオンオブジェクトに一致する構造型を定義したい2ケースクラス case class StringCaseClass(argument: String) case class IntCase

    4

    1答えて

    Typescriptは構造型の互換性のための直接テストをサポートしていますか? C#が活字体で、チェックのこの種を行うためにいくつかの直接的な方法はありisオペレータとタイプ表面IsAssignableFrom(object instance) if (foo is SomeType) ... if (SomeType.IsAssignableFrom(foo)) ... サポートしています