一个参数在参数列表中引用另一个参数

时间:2015-06-23 19:26:24

标签: scala arguments programming-languages function-declaration

偶尔,我会遇到一个想要引用另一个论点的论点。例如,

def monitor(time: Double, f: Double => Double, resolution: Double = time / 10) = {...}

请注意,分辨率是指时间。有可能的语言吗? Scala有可能吗?

2 个答案:

答案 0 :(得分:3)

在Scala中有点可能,但你必须讨论参数:

def monitor(time: Double, f: Double => Double)(resolution: Double = time / 10) 

你不能以提出问题的方式来做。

答案 1 :(得分:2)

我不知道这种结构可行的任何语言,但是一个简单的解决方法并不难找到。

在scala中,这样的事情是可能的:

scala> def f(i : Int, j : Option[Int] = None) : Int = {
     | val k = j.getOrElse(i * 2)
     | i + k
     | }
f: (i: Int, j: Option[Int])Int

scala> f(1)
res0: Int = 3

scala> f(1, Some(2))
res1: Int = 3

在scala中,你也可以这样做:

scala> def g(i : Int)(j : Int = i * 2) = i + j
g: (i: Int)(j: Int)Int

scala> g(2)(5)
res6: Int = 7

scala> g(2)()
res7: Int = 6