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允许传递null?_Scala - Fatal编程技术网

为什么Scala允许传递null?

为什么Scala允许传递null?,scala,Scala,我正在翻阅一本书 下面是一个例子: def toInts:字符串:选项[Int]={ 试一试{ SomeInteger.parseInts.trim }抓住{ 案例e:异常=>无 } } val x=null printlntoIntx/选项有帮助,因为Optionnull==None 但通常我们会用这样的签名来预测它 def toInt(s: Option[String]): Option[Int] 并使用Scala层包装可以返回null的遗留API toInt(Option(legacyJ

我正在翻阅一本书

下面是一个例子:

def toInts:字符串:选项[Int]={ 试一试{ SomeInteger.parseInts.trim }抓住{ 案例e:异常=>无 } } val x=null printlntoIntx/选项有帮助,因为Optionnull==None

但通常我们会用这样的签名来预测它

def toInt(s: Option[String]): Option[Int]
并使用Scala层包装可以返回null的遗留API

toInt(Option(legacyJavaApi()))
除疣器等棉绒也有助于:

有时使用var x:A=null进行初始化。如果A是一个类型参数,则[A]的安装非常有用,因为否则您将为x分配什么?

选项会有所帮助,因为Optionnull==None

但通常我们会用这样的签名来预测它

def toInt(s: Option[String]): Option[Int]
并使用Scala层包装可以返回null的遗留API

toInt(Option(legacyJavaApi()))
除疣器等棉绒也有助于:


有时使用var x:A=null进行初始化。如果A是一个类型参数,则[A]的安装非常有用,因为如果不是这样,您会给x分配什么?

是的,Kotlin也正确地分配了这个参数。尽管Scala在很多方面都做得很出色,但不检查null很可能是Scala中最糟糕的决定。它看起来像多蒂,因为它是什么worth@SilvioMayolo科特林至少试图把它做好,但很快;不过,我没有检查最近在这方面是否有任何变化。也许这也值得解释一下,为什么TS和锈迹不同。1.TS有JS为基础,JS没有任何类型的系统。因此,TS的类型系统基本上是一个绿地项目,它从一开始就有机会做到这一点,而且非常成功。Java的情况并非如此,它已经有了包含null等的字符串。类似地,Rust:is不必与任何有毒的遗留类型注释兼容,因此它做了正确的事情,并完全消除了null作为概念。感谢@Andrey TyukinYep的解释,Kotlin也正确地实现了这一点。尽管Scala在很多方面都做得很出色,但不检查null很可能是Scala中最糟糕的决定。它看起来像多蒂,因为它是什么worth@SilvioMayolo科特林至少试图把它做好,但很快;不过,我没有检查最近在这方面是否有任何变化。也许这也值得解释一下,为什么TS和锈迹不同。1.TS有JS为基础,JS没有任何类型的系统。因此,TS的类型系统基本上是一个绿地项目,它从一开始就有机会做到这一点,而且非常成功。Java的情况并非如此,它已经有了包含null等的字符串。类似地,Rust:is不必与任何有毒的遗留类型注释兼容,因此它做了正确的事情,并完全消除了null作为概念。感谢解释@Andrey TyukinIs null所有类型的某种超级类型?@captain yossarian它是所有其他引用类型的子类型。从Scala 3开始,可以更改它,使其仅为具有-Yexplicit nulls标志的任何类型的子类型。null是否是所有类型的某种超级类型?@captain yossarian它是其他所有引用类型的子类型。在启动Scala 3时,可以对其进行更改,使其仅为具有-Yexplicit nulls标志的任何类型的子类型。