簡體   English   中英

如何在scala中調用以“ by-name”作為參數的函數

[英]How would call a function that calls “by-name” as an argument in 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 ) )

的類型的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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM