Я пытаюсь определить, что я думаю, что быть «по умолчанию аргумент», с implicit
аргументом:Вызов функции с неявной и Non-неявной
scala> def f(implicit x: Int, y: String) = y
f: (implicit x: Int, implicit y: String)String
Примечание - я попытался определить implicit x: Int
в качестве второй аргумент, но я получил ошибку компиляции:
scala> def f(y: String, implicit x: Int) = y
<console>:1: error: identifier expected but 'implicit' found.
def f(y: String, implicit x: Int) = y
Во всяком случае, я устанавливаю implicit Int
.
scala> implicit val x: Int = 100
x: Int = 100
Тогда я не смог вызвать f
с только String
аргумент:
scala> f("foo")
<console>:10: error: not enough arguments for method f:
(implicit x: Int, implicit y: String)String.
Unspecified value parameter y.
f("foo")
^
Далее я попытался вызвать функцию f
, указав аргумент. Это тоже не получилось.
scala> f(y = "foo")
<console>:10: error: not enough arguments for method f:
(implicit x: Int, implicit y: String)String.
Unspecified value parameter x.
f(y = "foo")
^
Можно ли вызывать функцию f
, предоставляя неявное и обеспечивая только один аргумент для y
?
неявный для полного списка параметров, а не только одного аргумента. Вам нужно два списка параметров: 'f (y: String) (неявный x: Int)' –