3

すべてではなく、いくつかの暗黙的なパラメーターを除外することは可能ですか? 名前付きパラメーターで試しました:

def foo(implicit a: Int, b: String) {
  if (a > 0) {
    println(b)
    foo(a = a-1)   // error
  }
}

残念ながら、コンパイラは with の再帰呼び出しを拒否fooします。

not enough arguments for method foo
Unspecified value parameter b
4

2 に答える 2

1

一部の暗黙的なパラメーターを除外することはできません。だから、あなたの例では

def foo(implicit a: Int, b: String): Unit = ???

のみの指定はできませんa。ただし、暗黙的なパラメーターのデフォルト値を指定できます。たとえば、

def foo(implicit a: Int, b: String = "---"): Unit = ???

b暗黙的に使用できない場合は、"---"使用されます。

implicitキーワードは、1 つのパラメーターを暗黙的としてマークするのではなく、パラメーター リストを暗黙的としてマークすることに注意してください。

于 2013-07-04T16:43:31.570 に答える
1

何を達成しようとしているのかはわかりませんが、次のようなことができます:

def foo(implicit a: Int, b: String): Unit = {
  def helper(a: Int)(implicit b: String): Unit =
    if (a > 0) {
      println(b)
      helper(a - 1)
    }
  helper(a)
}
于 2013-07-04T10:08:16.773 に答える