在不同的Lisp,有可能爲我創造的一系列功能,就好像他們剛剛過正常值:如何在Scala中定義相同元素的函數列表?
(def ops [+ - * /])
,我可以再遍歷,再次,好像他們只是正常值:
(doseq [op ops] // (doseq (op ops) is like for (op <- ops) in scala
(println (op 1 2 3 4)))
現在,我已經試過Scala中的幾件事情,他們都失敗:
scala> List(+, -, *, /)
<console>:1: error: illegal start of simple expression
List(+, -, *, /)
^
scala> List[Double => Double](+, -, *, /)
<console>:1: error: illegal start of simple expression
List[Double => Double](+, -, *, /)
^
scala> List[Double => Double](+_, -_, *_, /_)
<console>:8: error: not found: value *
List[Double => Double](+_, -_, *_, /_)
^
<console>:8: error: not found: value/
List[Double => Double](+_, -_, *_, /_)
^
那麼什麼是定義列表的正確方法Scala中的函數/操作符?
下面有很好的答案,但是,正如你所看到的,你可以在這樣的方式只定義*同類型化*功能。如果你想存儲不同類型的函數,你必須使用* heterogeneous *結構(例如列表)。 – DaunnC 2014-10-04 08:32:46
@DaunnC你會介意在這個問題的另一個答案中使用*使用異構結構*嗎?我會很感激。 – 2014-10-06 08:19:09