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

相關問題