Какие функции Scala реализованы с помощью отражения? - PullRequest
18 голосов
/ 02 января 2011

Хорошо известен факт, что структурные типы реализуются через отражение. Есть ли еще какие-то языковые конструкции, которые используют отражение?

Ответы [ 6 ]

15 голосов
/ 02 января 2011

Это тесно связано со структурными типами, но любой экземпляр анонимного объекта, например,

new { def print = ("hello world") }.print

будет использовать отражение.

http://scala -programming-language.1934581.n4.nabble.com / Структурные типы-отражения-td3071599.html

10 голосов
/ 02 января 2011

В перечислениях используется отражение, чтобы узнать обо всех возможных значениях перечисления для функции nameOf. (См. Метод populateNameMap в Enumeration.scala ). Это делается один раз, при первом вызове nameOf для определенного типа Enumeration.

5 голосов
/ 02 января 2011

Вызов метода в структурных типах зависит от отражения:

type T = { def startsWith(x:String):Boolean }
def doSomethingWith(x:T) = x.startsWith("abc")
doSomethingWith("abcdef")
5 голосов
/ 02 января 2011

Если вы рассматриваете isInstanceOf / asInstanceOf как отражение, то сопоставление с образцом зависит от них

2 голосов
/ 02 января 2011

Интерпретатор Scala очень интенсивно использует рефлексию.

1 голос
/ 02 января 2011

Это не языковая конструкция, но ScalaTest включает Suite.execute, которая использует отражение для поиска и вызова методов тестирования.

Использует ли сопоставление с шаблоном Scala любоеза кадром отражение?

...