scala学习手记8 - 自适应的默认做法
scala有一些默认做法,会让代码更简洁、更易读写,下面列出了这样几个特性:
1. 支持脚本。scala支持脚本,因此无须将所有的代码都放到类里。如果脚本可以满足需求,就将代码放到一个脚本里,无须再创建一个冗余的类。
2. return是可选的。如果没有写return关键字,方法调用会自动返回最后一个求值的表达式——如果它符合方法声明的返回值类型。
3. 分号“;”是可选的。不必在每个语句的后面都写上分号,这样会使代码更简洁。如果语句太长或者包含多行的话可以换行继续写,scala能够识别语句是否完整。通常使用分号的场景就是一行内有多条语句。
4. 类和方法默认是public的,不必显式使用public关键字。
5. Scala提供了轻量级的语法创建JavaBean——用更少的代码创建变量和final属性。
6. 不会强制捕获一些不关心的异常,降低了代码规模,也避免了不恰当的异常处理。
前四个在以前几节里都曾经提到过,后两个是以后学习的内容,现在只是看到教材上写了,也就列了出来。
另外,默认情况下,scala会导入两个包和一个对象。导入顺序如下:
java.lang
scala
scala.Predef
其中“一个对象”是Predef。因为有这个默认导入的机制,使用这两个包中的类不需要使用全限定类名。比如使用String类时,就不需要使用java.lang.String,也不必显式导入。因为默认导入了scala包中的全部内容,所以可以很容易的使用scala中的类型。
Predef对象(是对象不是类哦)包含了类型、隐式转换以及一些常用的方法。因为已经默认导入了,所以使用时无需导入也不需要任何前缀即可使用这些方法和转换。这些操作非常便捷,以至于在刚开始使用时会将之视为scala语言的一部分,实际上他们是scala程序库的一部分。
Predef对象也为诸如scala.collection.immutable.Set和scala.collection. immutable.Map这样的东西提供了别名。比如,引用Set或Map,实际上引用的是他们在Predef中的定义,它们会依次转换为其在scala.collection.immutable包里的定义。
ALL!
scala学习手记8 - 自适应的默认做法的更多相关文章
- scala学习手记17 - 容器和类型推断
关于scala的类型推断前面已经提到过多次.再来看一下下面这个例子: import java.util._ var list1: List[Int] = new ArrayList[Int] var ...
- scala学习手记38 - 方法命名约定和for表达式
方法命名约定 之前在学习<运算符重载>一节时曾经说过一个方法命名约定:方法的第一个字符决定了方法的优先级.现在再说另一个命名约定:如果方法以冒号(:)结尾,则调用目标是运算符后面的实例. ...
- scala学习手记36 - 容器基础
scala的容器包括Set.List和Map.三种容器的特征和Java中一样.scala为每种容器都提供了可变和不可变两种版本,分别位于scala.collection.mutable或scala.c ...
- scala学习手记35 - 隐式类型转换
先来看一下下面的内容: 2 days "ago" 5 days "from_now" 如上的内容具体应该是什么呢?不过怎么看也不像是代码.不过既然是在学代码,拿 ...
- scala学习手记31 - Trait
不知道大家对java的接口是如何理解的.在我刚接触到接口这个概念的时候,我将接口理解为一系列规则的集合,认为接口是对类的行为的规范.现在想来,将接口理解为是对类的规范多少有些偏颇,更恰当些的观点应该是 ...
- scala学习手记29 - 偏应用函数
调用函数可以说成是将函数应用于实参.如果传入所有的预期的参数,就完全应用了这个函数.如果只传入几个参数,就会得到一个偏应用函数. 偏应用函数是一个特殊的概念,在scala中它是使用val定义的,但是在 ...
- scala学习手记28 - Execute Around模式
我们访问资源需要关注对资源的锁定.对资源的申请和释放,还有考虑可能遇到的各种异常.这些事项本身与代码的逻辑操作无关,但我们不能遗漏.也就是说进入方法时获取资源,退出方法时释放资源.这种处理就进入了Ex ...
- scala学习手记23 - 函数值
scala的一个最主要的特性就是支持函数编程.函数是函数编程中的一等公民:函数可以作为参数传递给其他函数,可以作为其他函数的返回值,甚至可以在其它函数中嵌套.这些高阶函数称为函数值. 举一个简单的例子 ...
- scala学习手记22 - 参数化类型的可变性
java 的代码中多少有些不是很严谨的内容,比如下面的这段代码: public class Trouble { public static void main(String[] args) { Int ...
随机推荐
- JavaWeb中servlet读取配置文件的方式
我们在JavaWeb中常常要涉及到一些文件的操作,比如读取配置文件,下载图片等等操作.那我们能不能采用我们以前在Java工程中读取文件的方式呢?废话不多说我们来看看下我们以前在Java工程中读取文件是 ...
- 疯狂Html+CSS+JS 中JS总结
来自:http://mzkmzk.github.io/blog/2015/10/05/amazeing-js/ 0 总结 本书的JS 第一章有讲语法有挺多常见的坑点和原理解释很不错 第二章DOM编程讲 ...
- thinkphp,下载附件
ThinkPHP框架下有个Org/Net/Http.class.php的方法download. Http.class.php的download方法如下 /** * 下载文件 * 可以指定下载显示的文件 ...
- 网络编程4 网络编程之FTP上传简单示例&socketserver介绍&验证合法性连接
今日大纲: 1.FTP上传简单示例(详细代码) 2.socketserver简单示例&源码介绍 3.验证合法性连接//[秘钥加密(urandom,sendall)(注意:中文的!不能用)] 内 ...
- 支付宝SDK的使用方法
前奏 现在随着移动开发的快速发展,越来越多的应用要求在线支付功能.最近做了一个关于支付宝支付功能的应用,在使用支付宝的过程中,遇到一些不必要的弯路,因此,写了这篇文章总结一下关于ios开发如何使用支付 ...
- mfc中 控件 对话框 添加颜色 背景图片
1 设置对话框透明 在设置控件颜色中要使用 nCtlColor Contains one of the following values, specifying the type of control ...
- Extjs combobox 实现搜索框的效果
目的:使用combobox实现一个类似搜索框的效果,即用户输入内容后,出现相关下列列表,提供选择. 实现:extjs3 中combobox自身带这个功能即在remote模式下,store在load的时 ...
- mysql 客户端命令行下 直接查询并导出数据
mysql原来还能这么导出数据,涨知识了. 方式1: select ....(sql语句) INTO OUTFILE '/var/lib/mysql/msg_data.csv ' (导出的文件位置 ...
- django--个人主页建立练习
1.前端页面采用模板继承与动态模板 {% extends 'base.html' %} {% block content %} {% for article in article_list %} &l ...
- Python 模块之 xlrd (Excel文件读写)
# 1. 导入模块 import xlrd # 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls') # 3. 使用技巧 # 3.1 获 ...