Если у меня есть следующий код:
val wows = Buffer[Wow]()
def yo(f: _ => Wow) { wows += f }
, и я получаю сообщение об ошибке при попытке добавить f. Интересно, как я могу использовать f внутри тела метода, или, точнее, как я должен ссылаться на него, поскольку f
или f ()
или f (_)
не работают.
ОБНОВЛЕНИЕ:
Тип f
не может быть изменен на f: => Вау
, потому что функции типа _ => Wow
переданы в этот метод происходит из такого класса:
object Wonderful {
val wows = Buffer[Wow]()
def yo(f: _ => Wow) { wows += f }
}
class Joy[+R](fs: Buffer[_ => R]) {
def exalt() {
fs.map(Wonderful.yo(_))
}
}
и этот буфер не может быть параметризован с помощью => R
, он показывает ошибку.
ОБНОВЛЕНИЕ 2: Вы оба ответили вторым, прежде чем я закончил объяснение второй части! Спасибо! Вот это скорость!
ОБНОВЛЕНИЕ 3: По сути, я изучаю Scala и пытаюсь опробовать все, что могу придумать. В этом конкретном фрагменте кода происходит следующее: у меня есть 3 основных класса:
Суть в том, что набор «порождающих» функций Funset можно редактировать во время выполнения, поэтому он представлен в виде буфера. В каждом цикле обновления Emitter передает каждую из функций Funsets функциям-создателям World, которые проявляют сгенерированные объекты в мире.
Надеюсь, я объяснил, чтобы это можно было понять ... может быть, это немного странно или неправильная архитектура, но ... в любом случае, теперь я кое-что узнал о Scala!