構造型がリフレクションによって実装されることはよく知られています。リフレクションを使用する他の言語構造がありますか?内部的にリフレクションを使用して実装されているScala機能はどれですか?
答えて
これは密接に構造タイプに関連しているが、任意の匿名のオブジェクトのインスタンスは、すなわち
new { def print = ("hello world") }.print
リフレクションを使用します。
http://scala-programming-language.1934581.n4.nabble.com/Structural-types-reflection-td3071599.html
+1:これは暗黙的な変換を定義する際に意味を持ちます。したがって、別途指摘する価値があります。要するに、*暗黙の関数の外にある*名前付き*クラスを常に定義し、そのクラスに変換する*別個の暗黙の関数を定義します。 –
これは、変更するクラス時間にメソッドを追加するために暗黙の変換を定義するときとまったく同じです。 – Russell
を依存している試験方法を見つけて呼び出すためにリフレクションを使用している、それは言語構造ではないですが、ScalaTestはSuite.execute
が含まれています。
Scalaのpattern matchingは裏側で反射を使用していますか?構造タイプで
メソッドの呼び出しは、反射によって異なります
type T = { def startsWith(x:String):Boolean }
def doSomethingWith(x:T) = x.startsWith("abc")
doSomethingWith("abcdef")
OPは具体的に構造型を挙げており、他の例を求めています。 –
@pelotom:通知OPはまたKen Bloomです。 – IttayD
@IttayD:ハァッか。 OPは@Nermin Serifovic –
列挙型はnameOf
機能の列挙約すべての可能な値のを見つけるためにリフレクションを使用しています。 (Enumeration.scalaのpopulateNameMap
メソッドを参照してください)。最初にnameOf
と呼んで、特定のEnumeration
タイプを呼び出すと、これは1回実行されます。
Scalaのインタプリタは、反射の非常に頻繁に使用します。
ありがとうございました。私はこの時点で何をすべきか本当に分かりません。この場合単一のものを受け入れることは公正ではありませんが、複数のものを受け入れることもできません。 –
は、匿名のオブジェクトに関するものを受け入れます。なぜなら、リフレクションが深刻なパフォーマンス上の問題に遭遇する唯一の構造型(一般的な構造型以外)だからです。 (たぶんそれは私だけですが、私は受け入れられた答えなしで私の質問の1つを残すことはできません) –