zoukankan      html  css  js  c++  java
  • scala 学习笔记八 简洁性

        Scala可以简洁地表示概念,有时甚至可以说过于简洁。

        1、消除中间结果

        在组合表达式中,最后一个表达式会变成整个表达式的结果。下面的例子中,值会被捕获到val result中,然后result从方法中返回。

        

        与将值放到中间结果中不同,推导自身可以产生结果:

        

        2、删除不必要的花括号

        如果一个方法由单个表达式构成,那么环绕方法的花括号就是不是必须的

        

        注意,之所以可以这样做是因为消除了中间结果,从而形成了单个表达式。

        注意上的187和188 行是两个条件表达式,在推导内部的每个表达式都置于独立的行中。

        3、移除不必要的参数

        

        上面的第271行的匿名函数已经实现了某种程度的简洁性,:在参数列表中只有一个参数,因此无需圆括号,并在函数中只有一个函数,因此无需花括号。

        第274行用了Scala特殊的下划线字符。到目前为止,只知道将下划线当作通配符使用的情况,但是当它成为方法调用的一部分时,下划线表示“填补这个空白”,而scala无需具名参数就可以为其传递每个字符。

        第277行,由于只有一个参数要传递给print,而且scala看到print将接受一个char,所以scala允许采用极端简介的形式,将方法名作为参数传递给foreach,而且根本没有参数列表。

        4、为返回类型使用类型推断

        

        上面第275行就使用了Scala的类型推断,从而移除了返回类型。但是参数列表和方法体之间的=还是必须的。

        5、用类型为名字起别名

        在使用别人的代码时,可能会发现他们选择的名字太长或者太难用了,Scala允许使用type关键字对现有名称起一个新名字作为别名:

        

        6、编程风格

        

        没有参数的方法可以在定义中省略圆括号,例如上面的127行。

        注意在调用中,尽管getA在定义时是带圆括号的,但是在调用时,带不带圆括号均可。但是,因为getB的定义是不带圆括号的,所以在调用它时,只能不带圆括号。

        这里有一个风格的问题,如果一个方法修改了对象的内部状态,即调用该方法时内部变量发生了变化,那么在该方法的定义中就应该保留圆括号,它示意读者这是一个修改方法(会导致对象发生变化);

        另一方面,如果调用该方法不会改变对象的任何状态,那么惯用方法是在该方法的定义中删除圆括号。

  • 相关阅读:
    HTTP协议
    DNS解析原理
    数据库 怎么配置多实例
    mysql回表
    Oracle进程说明
    Oracle动态和静态参数文件和控制文件
    Oracle数据库的启动和关闭过程
    Mysql索引
    sqlserver备份还原
    oracle undo表空间异常激增排查
  • 原文地址:https://www.cnblogs.com/shaosks/p/9364195.html
Copyright © 2011-2022 走看看