Передача дополнительных параметров в foldRight - PullRequest
0 голосов
/ 04 декабря 2010

Есть ли способ передать какой-то дополнительный параметр в функцию, предоставляемую Scala's List.foldRight?

Пример кода:

def createActorPool[T](implicit actor: Manifest[T], poolSize: Int): List[Supervise] = {
  (1 to poolSize).foldRight(List[Supervise]()) {
    (idx, list) => { Supervise(actorOf[actor], Permanent) :: list }
  }
}

Интересующий меня объектactor, который, однако, невидим при использовании для создания Supervise.

PS: Я довольно новичок в Scala, поэтому, пожалуйста, примите мои извинения, если это FAQ (несмотря на интенсивное поиск в Google без каких-либо подходящих обращений)).

Ответы [ 2 ]

3 голосов
/ 04 декабря 2010

Я не понимаю твоей проблемы.Функция, передаваемая в foldRight, может ссылаться и использовать все, что у вас есть в области видимости.Разве этого не достаточно?

2 голосов
/ 04 декабря 2010

В Scala символы [ и ] используются только для типов. В приведенном вами примере кода actor является объектом, а не типом. Возможно, это сработает:

def createActorPool[T](implicit actor: Manifest[T], poolSize: Int): List[Supervise] = {
  (1 to poolSize).foldRight(List[Supervise]()) {
    (idx, list) => { Supervise(actorOf[T], Permanent) :: list }
  }
}
...