相关疑难解决方法(0)

scala中的<:<运算符

任何人都可以<:<在scala中提供有关运算符的一些细节.我认为:

if(apple <:< fruit)  //checks if apple is a subclass of fruit.
Run Code Online (Sandbox Code Playgroud)

还有其他解释吗?我在scala源文件中看到了很多定义.

scala

39
推荐指数
4
解决办法
7189
查看次数

无法证明Null <:<T

在我的Scala代码中,我有一个数组Option[T],如下所示:

val items = Array.fill[Option[T]](10)(None)
Run Code Online (Sandbox Code Playgroud)

现在,我想从该数组中读取一个特定的项目; 如果没有设定,我想拥有null.但是当我这样做时items(desiredIndex).orNull,Scala编译器会对我大喊:

Error:(32, 34) Cannot prove that Null <:< T.
      (items(desiredIndex).orNull).asInstanceOf[T]
Run Code Online (Sandbox Code Playgroud)

我不完全理解这个错误.我所理解的是,编译器无法推断出它null确实是一个有效值T(因为它不知道T将是什么).纵观实施,我应提供证据隐含的事实,null是一个有效的价值T:

@inline final def orNull[A1 >: A](implicit ev: Null <:< A1): A1 = this getOrElse ev(null)
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:我怎样才能提供这样的证据?ev应该是什么类型,我该如何为它创建一个值?

scala optional

2
推荐指数
1
解决办法
2393
查看次数

标签 统计

scala ×2

optional ×1