Scala是否相当于C#"as"关键字?

TN.*_*TN. 8 c# casting scala classcastexception

Scala是否相当于C#as关键字?

var something = obj as MyClass;
Run Code Online (Sandbox Code Playgroud)

斯卡拉的asInstanceOf投掷java.lang.ClassCastException:

val something = obj.asInstanceOf[MyClass]
Run Code Online (Sandbox Code Playgroud)

Alo*_*ard 9

您可以使用模式匹配,如下所述:如何在Scala中转换变量?


Kim*_*bel 8

在读完C#之后,我意识到你可能意味着:

val foo = if (bar.isInstaceOf[Foo]) bar.asInstanceOf[Foo] else null.asInstanceOf[Foo]
Run Code Online (Sandbox Code Playgroud)

应该注意的是,在Scala中不鼓励使用null.你应该这样做:

val foo = if (bar.isInstaceOf[Foo]) Some(bar.asInstanceOf[Foo]) else None
Run Code Online (Sandbox Code Playgroud)

  • 还应该注意的是Scala中不鼓励施放;) (2认同)