又重新开始了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 - 快速体验的更多相关文章

  1. scala学习手记38 - 方法命名约定和for表达式

    方法命名约定 之前在学习<运算符重载>一节时曾经说过一个方法命名约定:方法的第一个字符决定了方法的优先级.现在再说另一个命名约定:如果方法以冒号(:)结尾,则调用目标是运算符后面的实例. ...

  2. scala学习手记33 - 使用trait进行装饰

    在上一节看到了scala的在实例一级的选择性混入就不得不感叹scala在语法上的扩展性.就通过这样一个特性scala简化了很多在java中的编程概念和设计模式. 比如说在java中常用的组合,以及装饰 ...

  3. scala学习手记23 - 函数值

    scala的一个最主要的特性就是支持函数编程.函数是函数编程中的一等公民:函数可以作为参数传递给其他函数,可以作为其他函数的返回值,甚至可以在其它函数中嵌套.这些高阶函数称为函数值. 举一个简单的例子 ...

  4. scala学习手记17 - 容器和类型推断

    关于scala的类型推断前面已经提到过多次.再来看一下下面这个例子: import java.util._ var list1: List[Int] = new ArrayList[Int] var ...

  5. scala学习手记8 - 自适应的默认做法

    scala有一些默认做法,会让代码更简洁.更易读写,下面列出了这样几个特性: 1. 支持脚本.scala支持脚本,因此无须将所有的代码都放到类里.如果脚本可以满足需求,就将代码放到一个脚本里,无须再创 ...

  6. scala学习手记40 - 使用case类

    前面两节我们已经多次接触过case关键字了.case关键字不仅可以用在match/case中来执行模式匹配,也可以用来修饰类.不过用case修饰的类也主要是用来做模式匹配.在上一节曾经提到过match ...

  7. scala学习手记40 - case表达式里的模式变量和常量

    再来看一下之前的一段代码: def process(input: Any) { input match { case (a: Int, b: Int) => println("Proc ...

  8. scala学习手记39 - 模式匹配

    在java中有switch/case这样的模式匹配语句,可以匹配的类型包括int,byte,char,short, enum,在java8又支持了字符串. 在scala中也有类似的模式匹配语句,即ma ...

  9. scala学习手记37 - 容器的使用

    这次统一看一下scala中容器类的几个方法. Set filter()方法 filter()方法用来从Set中过滤获取含有指定特征的元素.示例代码如下: val colors1 = Set(" ...

随机推荐

  1. 高性能Web开发系列

    1. 高性能WEB开发基础 http://www.uml.org.cn/net/201404225.asp 2. 高性能WEB开发进阶(上) http://www.uml.org.cn/net/201 ...

  2. Windows Server 2008及以上系统磁盘无法查看(About UAC and ACE)

    在windows Server2008及以上系統,如果UAC Enabled,ACE列表中不會包含Administrators成員的SID,所以即使你是administrators的成員,也無法訪問D ...

  3. English Grammar

    What is Grammar?  

  4. I/O多路复用技术(multiplexing)是什么?

    作者:知乎用户链接:https://www.zhihu.com/question/28594409/answer/52763082来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  5. XML 之快速入门

    XML 简介 - XML, 即可扩展标记语言(eXtensible Markup Language), 是一种标记语言. - 标记型语言: 使用标签进行操作 - 可扩展: XML 的标签可以自定义 - ...

  6. .net ASPxTreeList 使用手记

    ASPxTreeList在使用ASPxGridViewExporter控件做导出时,如果指定文件名是中文时会乱码可以用以下方法解决: grvExporter为ASPxGridViewExporter控 ...

  7. 基于Requests和BeautifulSoup实现“自动登录”

    基于Requests和BeautifulSoup实现“自动登录”实例 自动登录抽屉新热榜 #!/usr/bin/env python # -*- coding:utf-8 -*- import req ...

  8. python列表套字典数据类型转换

    1.题目 list3 = [ {'name':'Alex','hobby':'抽烟'}, {'name':'Alex', 'hobby':'喝酒'}, {'name':'Alex', 'hobby': ...

  9. python多线程锁lock/Rlock/BoundedSemaphore/Condition/Event

    import time import threading lock = threading.RLock() n = 10 def task(arg): # 加锁,此区域的代码同一时刻只能有一个线程执行 ...

  10. Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法

    Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...