官术网_书友最值得收藏!

Null and Nothing

Null and Nothing are called Bottom types in Scala. Why do we need these Bottom types? Take a look at the code snippet:

def checkIF10AndReturn20(x: Int): Int =  {
if(x == 10)
x * 2
else
throw new Exception("Sorry, Value wasn't 10")
}

The method checkIf10AndReturn20 expects a returned value of Int type, but what's happening here is different. If the passed argument value is not 10, we are throwing an exception, yet still the compiler is OK with our code. How can this be possible?

This is because of Type Inference. It always looks for common types in both branches of an if statement, so if in the other branch, the type extends everything, then the inferred type will automatically be the first one. In Scala, Nothing is a subtype of everything, hence the inferred type automatically becomes of type Int. Let's visualize this:

Visualizing Types Inferred

With this, it's important to understand that Type Inference plays an important role in Scala's ecosystem.

主站蜘蛛池模板: 禄丰县| 建德市| 鹤岗市| 汤原县| 镇远县| 双辽市| 中牟县| 浦北县| 五家渠市| 宜春市| 英德市| 天门市| 浮梁县| 大足县| 洪雅县| 黎平县| 大冶市| 郸城县| 洞头县| 唐山市| 安多县| 丰城市| 右玉县| 榕江县| 德清县| 枣强县| 隆子县| 元阳县| 乳山市| 抚顺县| 旬邑县| 罗田县| 景宁| 咸宁市| 平陆县| 舞阳县| 贵阳市| 冀州市| 高邮市| 莱州市| 渝中区|