Scala学习手记1 - 快速体验
又重新开始了scala的学习,因为中断了太长时间,所以这次还得从零开始。学习的过程就记录在这个博客上了。
这次学习的教程是《scala程序设计 java虚拟机多核编程实战》,我在多看上买了电子书。
安装好了scala运行环境以后,先在命令行窗口来一次初体验。在命令行窗口输入如下命令:
val number = 7
执行结果如下图:
我们在命令中并没有指明变量number的类型,但是并令执行后scala根据变量的值推断出了变量的类型,所以输出了number:Int = 6这样的信息。
在上面的使用中val是scala声明变量的一种修饰符,表示声明的变量完成了初始化以后就不可以再做修改。这有些类似于java中的final关键字。再演示一下val的用法,我们重新给变量number赋个值,看看执行结果是什么:
报错了,因为不能给val的变量重新赋值。
不知道大家有没有注意到另外一点:每条语句后面先在没了分号了。就是这样,scala就是对java做了全方位的精简和扩展,让使用者用起来非常痛快(这两个字以后可以拆开理解)。用上分号也是可以的:
以上演示的是scala作为脚本执行的方式。做为JVM上的一种语言,我们可以采用类似java的方式来创建scala类并编译执行。
如下代码创建了一个scala的类(姑且称之为类好了),类名为HelloWorld:
object HelloWorld {
def main(args: Array[String]) = println("Hello World!")
}
将代码写入一个名为HelloWorld.scala的文件中,使用scalac进行编译,编译完成后再使用scala命令执行就是了:
就是这样。也可以使用java命令执行字节码文件,不过需要引入相关的jar包。这里就不演示了。
还是回头看看代码中定义方法的语句吧:
def main(args: Array[String]) = println("Hello World!")
只使用了一个def关键字,使用args:Array[String]这样的方式指明了参数类型,方法体更是出奇的简单。
相信我,以后会看到更简洁更有表现力的写法。
OK!今天就先这样!
Scala学习手记1 - 快速体验的更多相关文章
- scala学习手记38 - 方法命名约定和for表达式
方法命名约定 之前在学习<运算符重载>一节时曾经说过一个方法命名约定:方法的第一个字符决定了方法的优先级.现在再说另一个命名约定:如果方法以冒号(:)结尾,则调用目标是运算符后面的实例. ...
- scala学习手记33 - 使用trait进行装饰
在上一节看到了scala的在实例一级的选择性混入就不得不感叹scala在语法上的扩展性.就通过这样一个特性scala简化了很多在java中的编程概念和设计模式. 比如说在java中常用的组合,以及装饰 ...
- scala学习手记23 - 函数值
scala的一个最主要的特性就是支持函数编程.函数是函数编程中的一等公民:函数可以作为参数传递给其他函数,可以作为其他函数的返回值,甚至可以在其它函数中嵌套.这些高阶函数称为函数值. 举一个简单的例子 ...
- scala学习手记17 - 容器和类型推断
关于scala的类型推断前面已经提到过多次.再来看一下下面这个例子: import java.util._ var list1: List[Int] = new ArrayList[Int] var ...
- scala学习手记8 - 自适应的默认做法
scala有一些默认做法,会让代码更简洁.更易读写,下面列出了这样几个特性: 1. 支持脚本.scala支持脚本,因此无须将所有的代码都放到类里.如果脚本可以满足需求,就将代码放到一个脚本里,无须再创 ...
- scala学习手记40 - 使用case类
前面两节我们已经多次接触过case关键字了.case关键字不仅可以用在match/case中来执行模式匹配,也可以用来修饰类.不过用case修饰的类也主要是用来做模式匹配.在上一节曾经提到过match ...
- scala学习手记40 - case表达式里的模式变量和常量
再来看一下之前的一段代码: def process(input: Any) { input match { case (a: Int, b: Int) => println("Proc ...
- scala学习手记39 - 模式匹配
在java中有switch/case这样的模式匹配语句,可以匹配的类型包括int,byte,char,short, enum,在java8又支持了字符串. 在scala中也有类似的模式匹配语句,即ma ...
- scala学习手记37 - 容器的使用
这次统一看一下scala中容器类的几个方法. Set filter()方法 filter()方法用来从Set中过滤获取含有指定特征的元素.示例代码如下: val colors1 = Set(" ...
随机推荐
- CodeForces 157B Trace
B. Trace time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...
- SQL server中使用临时表存储数据
将查询出来的数据直接用“INTO #临时表名称”的方式完成临时表的创建及数据的插入 SELECT * INTO #temp_NowStatusFROM Test SELECT * FROM #temp ...
- Tika a content analysis toolkit
Apache Tika - a content analysis toolkit The Apache Tika™ toolkit detects and extracts metadata and ...
- 异常处理、socke基于TCP协议编程
一.异常处理 1.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误过不了Python解释器的语法检测,必须在程序执行前改正) #语法错误示范一 if #语法错误示范二 de ...
- POJ 3613 Cow Relays (floyd + 矩阵高速幂)
题目大意: 求刚好经过K条路的最短路 我们知道假设一个矩阵A[i][j] 表示表示 i-j 是否可达 那么 A*A=B B[i][j] 就表示 i-j 刚好走过两条路的方法数 那么同理 我们把 ...
- Python3+Selenium3自动化测试-(一)
完成环境的安装并测试之后,我们对Selenium有了一定的了解了,接下来我们继续驱动浏览器做一些基本操作: 窗口尺寸设置.网页截图.刷新.前进和后退 窗口尺寸设置 在测试过程中,我们可能会要求打开浏览 ...
- (2.2)学习笔记之mysql基础操作(登录及账户权限设置)
本系列学习笔记主要讲如下几个方面: 本文笔记[三:mysql登录][四:账户权限设置][五:mysql数据库安全配置] 三.mysql登录 常用登录方式如下: 四.账户权限设置 (4.1)查看用户表, ...
- Python(函数式编程)
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- Django框架之单表操作
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
- change the color of a disabled TEdit?
change the color of a disabled TEdit? Author: P. Below Category: VCL {Question:How can I change the ...