Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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 列表(1)#contains()返回`false`_Scala - Fatal编程技术网

Scala 列表(1)#contains()返回`false`

Scala 列表(1)#contains()返回`false`,scala,Scala,鉴于以下情况: scala> List(1).contains() warning: there was one deprecation warning; re-run with -deprecation for details res18: Boolean = false 为什么false返回 签名如下: def包含[A1>:A](元素:A1):布尔值 因此,据我所知,包含的参数必须等于或高于A的类型 为什么返回false?如果使用-deprecation再次运行它(如警告所示),您将

鉴于以下情况:

scala> List(1).contains()
warning: there was one deprecation warning; re-run with -deprecation for details
res18: Boolean = false
为什么
false
返回

签名如下:

def包含[A1>:A](元素:A1):布尔值

因此,据我所知,
包含的
参数必须等于或高于
A
的类型


为什么返回
false

如果使用
-deprecation
再次运行它(如警告所示),您将看到:

scala> List(1).contains()
<console>:8: warning: Adaptation of argument list by inserting ()
  has been deprecated: this is unlikely to be what you want.
        signature: LinearSeqOptimized.contains[A1 >: A](elem: A1): Boolean
  given arguments: <none>
 after adaptation: LinearSeqOptimized.contains((): Unit)
              List(1).contains()
                              ^
res0: Boolean = false
scala>List(1).contains()
:8:警告:通过插入()调整参数列表
已被弃用:这不太可能是您想要的。
签名:LinearSeQoOptimized。包含[A1>:A](元素:A1):布尔值
给定参数:
自适应后:LinearSeQoOptimized。包含(():单位)
列表(1).contains()
^
res0:Boolean=false
因此,
List(1).contains()
被解析为
List(1).contains(())
,而
A1
的推断类型是
AnyVal
,它是
单位
Int
的最小上界


简单的回答是:不要这样做,这很糟糕。稍长一点:不要这样做,这是不好的,如果编译器建议重新运行
-deprecation
,接受这个提议,它可能会让事情变得更清楚。

():Unit
是它从
contains()
中得到的参数。为什么
lub
没有解析为
AnyVal
,而不是任何
scala>lub(List(typeOf[Int],typeOf[Unit])res28:reflect.runtime.universe.Type=AnyVal
@KevinMeredith噢,关于
AnyVal
你可能是对的。但是,它没有任何区别,因为该类型没有在任何地方使用(
包含
有效地接受了
任何
,这是使其几乎一文不值的几个问题之一)。