Предоставить структурный тип в параметризации типа метода во время выполнения? - PullRequest
0 голосов
/ 06 октября 2011

Продолжение до этого SO вопроса.

Предположим, у меня есть код

def bar(param: {def foo: Unit}*) = param.foreach(x => x.foo)

Эта функция заставляет объект param вызывать метод с именем foo

[EDIT]

Мне было интересно, возможно ли следующее (с отражением или без него)

  • param исправлено во время компиляции,имя функции (в данном случае foo) предоставляется во время выполнения
  • и param, а имя функции foo предоставляется во время выполнения
  • param фиксированово время компиляции имя функции, параметры функции, значения и возвращаемые типы предоставляются во время выполнения.

Я понимаю, что структурная типизация уже использует отражение.Поэтому мой вопрос заключается в том, может ли Scala позаботиться об этом или я явно использовал отражение в своем коде.Я думаю, что третий требует отражения, для которого я могу использовать библиотеку ASM .

1 Ответ

1 голос
/ 06 октября 2011

Если я понимаю ваш вопрос:

  1. Во время компиляции компилятор проверяет, что у каждого param действительно есть метод foo с правильной подписью.
  2. Вво время выполнения отражение используется для вызова метода foo каждого param

Так что вам не нужно использовать отражение самостоятельно, но вы должны помнить, что отражение будет использоваться привремя выполнения, и может потенциально снизить производительность.

...