Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala “接收”;缺少参数类型“;对函数文本的输入参数使用下划线时_Scala_Parameters_Function Literal - Fatal编程技术网

Scala “接收”;缺少参数类型“;对函数文本的输入参数使用下划线时

Scala “接收”;缺少参数类型“;对函数文本的输入参数使用下划线时,scala,parameters,function-literal,Scala,Parameters,Function Literal,我有一个带有泛型参数的trait,其中包含一个我试图将默认实现定义为“空”的方法 但是,我不喜欢客户端现在必须将其函数包装在Some()中。我更愿意允许他们不指定参数,或者在没有包装器的情况下指定参数 非常感谢您的指导。实际上,它在V参数方面有问题 这里是-Ylog:typer-Ytyper-debug | | | | | |-- ((x$1) => ()) : pt=FB[T,?] => Unit BYVALmode-EXPRmode (site: v

我有一个带有泛型参数的
trait
,其中包含一个我试图将默认实现定义为“空”的方法

但是,我不喜欢客户端现在必须将其函数包装在
Some()
中。我更愿意允许他们不指定参数,或者在没有包装器的情况下指定参数


非常感谢您的指导。

实际上,它在
V
参数方面有问题

这里是
-Ylog:typer-Ytyper-debug

|    |    |    |    |    |-- ((x$1) => ()) : pt=FB[T,?] => Unit BYVALmode-EXPRmode (site: value g in MB) 
<console>:13: error: missing parameter type
       trait MB[T <: Throwable] { def f[V](g: FB[T, V] => Unit = _ => ()): Unit = () }
                                                                 ^
|    |    |    |    |    |    \-> <error> => Unit
这项工作:

scala> trait MB[T <: Throwable, V] { def f(g: FB[T, V] => Unit = _ => ()): Unit = () }
defined trait MB
与默认参数类型相关的其他链接:


实际上,它在
V
参数上有问题

这里是
-Ylog:typer-Ytyper-debug

|    |    |    |    |    |-- ((x$1) => ()) : pt=FB[T,?] => Unit BYVALmode-EXPRmode (site: value g in MB) 
<console>:13: error: missing parameter type
       trait MB[T <: Throwable] { def f[V](g: FB[T, V] => Unit = _ => ()): Unit = () }
                                                                 ^
|    |    |    |    |    |    \-> <error> => Unit
这项工作:

scala> trait MB[T <: Throwable, V] { def f(g: FB[T, V] => Unit = _ => ()): Unit = () }
defined trait MB
与默认参数类型相关的其他链接:


可能与FailureBase的差异有关。无论如何,您都可以
((_u:Any)=>()
。默认参数可能有其他危险:这是票据。“defaultarggetter”的类型可能是问题所在。不推断“最广泛的有效类型”的一个原因是:给定
\uf.f
,很难搜索提供缺少成员的所有可能的隐式转换。很难解释应用了哪些转换。好的,在这些行上,这段代码:
val x=..toString
也应该编译,因为
toString
在Scala中的所有对象上都可用。因此,编译器应该推断出
\uu
的LUB,因为
任何
都可能与FailureBase的方差有关。无论如何,您都可以
((_u:Any)=>()
。默认参数可能有其他危险:这是票据。“defaultarggetter”的类型可能是问题所在。不推断“最广泛的有效类型”的一个原因是:给定
\uf.f
,很难搜索提供缺少成员的所有可能的隐式转换。很难解释应用了哪些转换。好的,在这些行上,这段代码:
val x=..toString
也应该编译,因为
toString
在Scala中的所有对象上都可用。因此,编译器应该将
\uuu
的LUB推断为
任何
极好的答案!谢谢你这么彻底。我知道你已经把它放在了原始帖子的评论中了,但是…你介意在你的答案中加一个旁注吗(如果你愿意的话,在底部)关于你为报道这件事而打开的罚单?这意味着阅读答案的人将拥有所需的所有上下文,以了解他们为什么在这个切线上,并且将来可能会根据票据在Scala编译器中进行修复。回答得好!谢谢你这么彻底。我知道你已经把它放在了原始帖子的评论中了,但是…你介意在你的答案中加一个旁注吗(如果你愿意的话,在底部)关于你为报道这件事而打开的罚单?这意味着阅读答案的人将拥有所需的所有上下文,以了解他们为什么在这个切线上,并且将来可能会根据票据在Scala编译器中进行修复。Tysvm。
scala> trait MB[T <: Throwable, V] { def f(g: FB[T, V] => Unit = _ => ()): Unit = () }
defined trait MB
scala> trait MB[T <: Throwable] { def f[V](g: FB[T, V] => Unit = _ => ()): Unit = () }
<console>:13: error: missing parameter type
       trait MB[T <: Throwable] { def f[V](g: FB[T, V] => Unit = _ => ()): Unit = () }
                                                                 ^
scala> trait MB[T <: Throwable] { def f[V](g: FB[T, V] => Unit = (_: Any) => ()): Unit = () }
defined trait MB