0

Я довольно новичок в scala и все еще в первые дни обучения. Я читал статью, в которой был пример, как так:Как вызвать функцию, которая вызывает «по-имени» в качестве аргумента в scala

def example(_list: List[Positions], function: Position => Option[Path]): Option[Path] = _list match {...} 

NB

  • Положение является (Int,Int)
  • Путь является List(Position)

От чего я понимаете, этот метод будет содержать:

  • list of positions

  • Option[Path]

и возвратит Option[Path]

То, что я не понимаю, как мы должны назвать этот метод?

Я попытался это:

example(Nil, Option(0,0))

ответ

2

Тип function является Position => Option[Path] - это не побочным именем аргумента, это типа, что эквивалентно Function1[Position, Option[Path]] - это функции который принимает один аргумент типа Position и возвращает Option[Path].

Итак, когда вы называете это вы можете передать анонимную функцию с типом соответствия, например:

example(Nil, pos => Some(List(pos))) 
example(Nil, pos => Some(List())) 
example(Nil, pos => None) 

Вы также можете передать метод с соответствующего типа, например:

object MyObj { 
    def posToPaths(position: Position): Option[Path] = Some(List(position)) 

    example(Nil, posToPaths) 
} 
+0

Спасибо тебе столько Зоар. Очень ценю это для устранения этого недоразумения – Kacy