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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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_Pattern Matching_Static Analysis - Fatal编程技术网

Scala:不允许可以';不要检查是否用尽

Scala:不允许可以';不要检查是否用尽,scala,pattern-matching,static-analysis,Scala,Pattern Matching,Static Analysis,我只想在我的代码库中允许那些形式的模式匹配,可以检查它们的详尽性。请注意,这并不意味着我想禁止非详尽的PartialFunction文字,因为这些文字可能非常有用: val foo:List[选项[Int]]=??? foo.collect{ 某些情况下(x)=>x } 但是如果我在上面的代码中将collect更改为map,我想确保我得到了一个错误,或者 如果foo的类型更改为e。g列出[任何](因为当时作者不可能考虑所有案例) 密封类型(特征或类)上的模式匹配很好,匹配基元类型(Int、St

我只想在我的代码库中允许那些形式的模式匹配,可以检查它们的详尽性。请注意,这并不意味着我想禁止非详尽的
PartialFunction
文字,因为这些文字可能非常有用:

val foo:List[选项[Int]]=???
foo.collect{
某些情况下(x)=>x
}
但是如果我在上面的代码中将
collect
更改为
map
,我想确保我得到了一个错误,或者 如果
foo
的类型更改为e。g<代码>列出[任何](因为当时作者不可能考虑所有案例)

密封类型(特征或类)上的模式匹配很好,匹配基元类型(Int、String等)也很好。但我不想允许匹配非密封类型(例如
Seq
)或类型参数。例如。这应该被禁止:

def[A](A:A):Int=A匹配{
案例a:Int=>a
案例=42
}

是否有Scala编译器标志或工具来强制执行此操作?应该可以使用e。GScalaFix,但是我还没有找到一个实现。

编译器不是已经警告过了吗?您可以将该警告转化为错误,这样代码就不会编译。不,Scala编译器不会对这两个示例发出警告。对于第二个示例,我确实希望它发出警告,对于第一个示例,如果我将
foo
的类型更改为
List[Any]
,编译器是否已经发出警告?您可以将该警告转化为错误,这样代码就不会编译。不,Scala编译器不会对这两个示例发出警告。对于第二个示例,我确实希望它发出警告,如果我将
foo
的类型更改为
List[Any]