0

我对scala非常陌生,仍然处于学习的初期阶段。我读了一篇文章,有像这样的例子:如何将调用“by-name”作为scala参数的函数调用

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

NB

  • 位置是(Int,Int)
  • Path是一个List(Position)

从我明白,这种方法将保留:

  • list of positions

  • Option[Path]

,并返回Option[Path]

我不明白的是我们怎么来调用这个方法?

我尝试这样做:

example(Nil, Option(0,0))

回答

2

类型的functionPosition => 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

非常感谢Zohar。真的很感谢它清除误解 – Kacy

相关问题