十二步学会Scala(1):从下载安装到定义方法

开发 后端
本篇是一个Scala快速入门,旨在step by step帮助读者快速完成Scala的上手步骤。全文计划分为十二步骤,本文是前四个,介绍了从下载到定义方法的内容。

Scala教程现在网络上不算特别多,但也不少了。alanwu撰写本篇的目的在于提供一个Scala快速入门,这样大家可以先很快的上手,以后再慢慢熟悉这门语言。

原文地址:AlanWu的博客 | 51CTO编辑推荐:Scala编程语言专题

本Scala快速入门参考了《First Steps to Scala》的内容。下面开始:

我先大致根据这篇文章写一些自己的理解,让想学Scala的同学有个感性认识。

读者对象:有Java经验的工程师

第一步:下载和安装Scala

官网下载并接压缩,像安装ANT或MAVEN之类的那样,把解压后的bin路径加到path里面去就可以了。

在命令行模式下输入Scala

cmd 写道

  1. C:\Documents and Settings\19002850>scala  
  2. Welcome to Scala version 2.7.5.final (Java HotSpot(TM) Client VM, Java 1.6.0_13)  
  3. .  
  4. Type in expressions to have them evaluated.  
  5. Type :help for more information.  
  6.  
  7. scala>  
  8.  

如果你看到scala提示符,那么恭喜你,说明Scala安装成功了。

第二步:学习使用Scala解释器(interpreter)

Scala也算是解释性语言,所以你可以直接与解释器交互。

cmd 写道

  1. scala> 1 + 3 
  2. res0: Int = 4 
  3.  
  4. scala>  
  5.  

直接输入 1 + 3 ,返回res0: Int = 4

res0表示变量名, Int表示类型, 4是值。

Scala的类型定义在冒号后面,和java放在前面不同,和UML类图的属性定义方式一样。

Scala是强类型语言,必须要定义类型,但Scala编译器足够聪明,他能够根据你的值帮你定义变量的类型。

这里res0是个变量名,所以你可以接下来再使用。

cmd 写道

  1. scala> res0 * 3 
  2. res1: Int = 12 
  3.  
  4. scala>  
  5.  

解释器又给了一个变量res1。

Scala的所有变量都是对象,所有操作都是方法。

所以*也是方法,你可以这样调用:

cmd 写道

  1. scala> res0.*(res1)  
  2. res2: Int = 48 
  3.  
  4. scala>  
  5.  

这个和java很不同,java的int不是对象。

是不是有点绕进去了,那么来个hello world宣告第二步结束。

cmd 写道

  1. scala> println("Hello World!")  
  2. Hello World!  
  3.  
  4. scala>  
  5.  

这个println是个方法,因为Scala有预定义导入一些类,所以可以直接使用。

因为Scala更新很快,每个版本的Scala的解释器可能都有一些不同,所以如果返回的变量名或有其他有一点不一样,请不要太奇怪。

第三步: 定义变量

写程序最入门就是定义变量和方法,前面的变量由Scala解释器自动定义了,这一步自己定义变量。

Scala有两种类型的变量,val 和var 。 val 变量的值只能初始化一次,再次赋值就发生错误,var就和java的变量相同,可以随时修改。

val 是函数式编程的风格,变量一旦赋值就不要再做修改,从程序上将有很多好处,但有时候做起来会比较绕。

cmd 写道

  1. scala> val msg = "Hello World!" 
  2. msg: java.lang.String = Hello World!  
  3.  
  4. scala> msg = "Hello JavaEye" 
  5. :5: error: reassignment to val  
  6. msg = "Hello JavaEye" 
  7. ^  
  8.  
  9. scala>  
  10.  

Scala是强类型语言,每个变量都需要类型。但如果你赋给变量的有足够明细的类型提示,那么编译器会帮你把类型加上去。

把刚才的msg打印出来

cmd 写道

  1. scala> println(msg)  
  2. Hello World!  
  3.  
  4. scala>  
  5.  

再来看看var ,比较好理解。

cmd 写道

  1. scala> var greeting: String = "Hello World!" 
  2. greeting: String = Hello World!  
  3.  
  4. scala> println(greeting)  
  5. Hello World!  
  6.  
  7. scala> greeting = "Hello World!" 
  8. greeting: String = Hello World!  
  9.  
  10. scala> println(greeting)  
  11. Hello World!  
  12.  
  13. scala>  
  14.  

记住,Scala有两种变量标识,和java不一样。

第四步: 定义一些方法

以前程序就是变量和方法组成吧,所以变量和方法是最基础的东西。

我们定义一个取最大值的方法max

cmd 写道

  1. scala> def max(x: Int, y: Int): Int = if(x < y) y else x  
  2. max: (Int,Int)Int  
  3.  

定义变量用val和var,定义方法用def 。

这个max方法有方法参数,返回值类型,方法体。麻雀虽小,五脏俱全了。

Scala的变量表示是变量名: 类型 ,这一点和java甚至其他语言都很不同,和UML风格比较接近。

调用方法很简单:

cmd 写道

  1. scala> max(3,8)  
  2. res9: Int = 8 
  3.  

Scala中方法也是一个类型,或者说是一个值,成为First Class。

所以可以把max看成是个变量名,(Int,Int)Int是它的类型。他可以作为参数传递,也可以赋值给其他变量。

cmd 写道

  1. scala> val m = max _  
  2. m: (Int, Int) => Int =   

将max赋值给m, 请注意max后面带的下划线,不要忘记写了。
 
调用m

cmd 写道

  1. scala> m(1,3)  
  2. res11: Int = 3 
  3.  
  4. scala>  
  5.  

在初学的时候就讲这个好像有点急进了,不太容易理解,不过没关系,先了解一下总比看到后莫名其妙好。

OK,本篇到此结束。本Scala快速入门系列计划通过十二步完成,现在进展到了第四步。后续内容敬请期待!

【编辑推荐】

  1. Scala讲座:面向对象和函数式的特点总结
  2. 万物皆对象:介绍Scala对象
  3. Scala的泛型:最强大的特性
  4. Scala的Trait:可以包含代码的接口
  5. Scala的模式匹配和条件类
责任编辑:yangsai 来源: JavaEye博客
相关推荐

2009-10-19 11:26:08

Scala循环数组

2010-05-07 15:32:12

SharePoint

2013-11-26 10:16:09

FedoraFedora 20 B

2019-04-30 10:27:56

UbuntuLinuxDisco Dingo

2009-12-01 10:39:59

Visual Stud

2010-06-07 16:37:30

rsync 下载

2018-01-19 10:59:09

Linux安装卸载

2009-07-22 07:53:00

Scala无参数方法

2009-03-11 13:32:12

简历求职应聘

2009-12-03 14:07:55

下载安装ftp

2009-07-21 17:21:57

Scala定义函数

2010-01-06 11:03:54

Ubuntu常用软件

2011-06-23 09:13:59

Qt SDK Creator

2009-07-20 16:56:51

Scala类的定义

2009-12-28 12:31:23

Fedora Core

2011-05-12 08:49:58

iPhone SDKXcode

2022-05-21 17:28:01

HANA内存数据库

2010-03-01 15:55:00

Fedora Eva

2009-11-25 15:58:50

无线路由安装

2009-07-10 16:20:48

Ubuntu安装JDKUbuntu 7.10
点赞
收藏

51CTO技术栈公众号