`
alanwu
  • 浏览: 197301 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

十二步学会Scala -1

阅读更多

 

关于Scala的意义,优劣就先不说了,上Step by Step把人引进来再说,大家一步步进门后再做语言比较也不迟。

 

参考《First Steps to Scala

http://www.artima.com/scalazine/articles/steps.html

 

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

 

 

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

 

第一步:下载和安装Scala

在官网下载http://www.scala-lang.org/downloads 并接压缩,像安装ANT或MAVEN之类的那样,把解压后的bin路径加到path里面去就可以了。

 

在命令行模式下输入Scala

cmd 写道

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

scala>

 

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

 

 

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

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

 

cmd 写道
scala> 1 + 3
res0: Int = 4

scala>

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

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

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

 

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

 

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

 

cmd 写道
scala> res0 * 3
res1: Int = 12

scala>

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

 

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

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

cmd 写道
scala> res0.*(res1)
res2: Int = 48

scala>

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

 

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

 

cmd 写道
scala> println("Hello World!")
Hello World!

scala>

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

 

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

 

 

第三步: 定义变量

 

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

 

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

 

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

cmd 写道
scala> val msg = "Hello World!"
msg: java.lang.String = Hello World!

scala> msg = "Hello JavaEye"
<console>:5: error: reassignment to val
msg = "Hello JavaEye"
^

scala>


 

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

 

把刚才的msg打印出来

cmd 写道
scala> println(msg)
Hello World!

scala>

 

 

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

cmd 写道
scala> var greeting: String = "Hello World!"
greeting: String = Hello World!

scala> println(greeting)
Hello World!

scala> greeting = "Hello JavaEye!"
greeting: String = Hello JavaEye!

scala> println(greeting)
Hello JavaEye!

scala>

 

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


第四步: 定义一些方法

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

 

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

cmd 写道
scala> def max(x: Int, y: Int): Int = if(x < y) y else x
max: (Int,Int)Int

 

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

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

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

调用方法很简单:

cmd 写道
scala> max(3,8)
res9: Int = 8

 

 

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

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

 

cmd 写道
scala> val m = max _
m: (Int, Int) => Int = <function>

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

 

调用m

cmd 写道
scala> m(1,3)
res11: Int = 3

scala>

 

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

 

OK,本篇到此结束。

 

 

下一篇《十二步学会Scala-2》 将介绍循环和数组

 

未完待续

 

6
0
分享到:
评论

相关推荐

    scalaz-scala-exchange

    Scalaz,或者我是如何学会停止担心并爱上单子的

    《scala编程》第3版英文版&第3版源码

    资源包含《Scala编程》第3版英文版和第3版源代码,Scala编程第3版,目前是最新版,支持Scala... 因此学习这本书,不单单是学会了scala语言本身,更重要的是扩展了视野,提升了思维能力和培养了考虑问题的思维方式方法。

    Scala集合.md

    学习spark之前,大家必须先学会Scala这门语言,他是spark的基础,这里总结了一下Scala集合的相关知识点

    Scala程序设计_Java虚拟机多核编程实战

    本书循序渐进地介绍了Scala的函数式编程基础,虽然篇幅...读者可以学会使用Scala静态语言的强大功能创建简洁、可扩展、高度可并行的代码。对于多核时代JVM上的并发编程,Scala是绝好的工具,而本书是你必不可少的向导。

    Scala程序设计

    Scala是一种针对 JVM 的通用的编程语言,用来以简明、...读者可以学会使用Scala静态语言的强大功能创建简洁、可扩展、高度可并行的代码。对于多核时代JVM上的并发编程,Scala是绝好的工具,而本书是你必不可少的向导。

    Spark:用Scala和Java实现WordCount

    IDEA确实很优秀,学会之后,用起来很顺手。关于如何搭建scala和IDEA开发环境,请看文末的参考资料。用Scala和Java实现WordCount,其中Java实现的JavaWordCount是spark自带的例子($SPARK_HOME/examples/src/main/...

    Scala 基础语法

    如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的。 我们可以认为 Scala 程序是对象的集合,通过...

    Hadoop原理与技术Spark操作实验

    2. 学会在Spark Shell中编写Scala程序; 3. 学会在Spark Shell中运行Scala程序。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 (一)Spark基础知识 (1)输入start-...

    基于Spark+Scala+MongoDB的大数据实战,商品推荐系统设计与实现.zip

    我学会了使用Spark编写分布式的数据处理程序,并通过调优技巧提高了程序的性能。在实践过程中,我遇到了一些挑战,比如调试复杂的数据流转和处理逻辑,但通过查阅文档和与同学的讨论,我成功地克服了这些困难。最终...

    今天我学会了

    今天我学会了-源码

    七天学会七种编程语言(英文版chm)

    七天学会七种编程语言(Seven Languages in Seven Weeks)Jolt大奖2010年作品(英文版chm)。 涵盖流行语言Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell以及综合的掌握的教程,很吸引人吧,请根据需要选择...

    Trivial_i2a:琐碎的 i2a

    一旦你学会使用它们,生产力的提高是巨大的。 解析器组合器是从 Haskell 借来的一个特性,Haskell 是一种您可能应该看看的纯函数式语言。 支持的格式 礼物 QTI ##支持的问题类型 单选题 多项选择题(带加权答案)...

    metarank:友好的“学会排名”引擎

    多个时间窗口:因此,每个功能都可以在1-2-4-8-n天的时间内进行更新。 范围设定:例如,特定查询的商品点击率。 绝对值和相对值:可以跟踪每个项目的点击次数占点击总数的百分比。 使用可插拔数据库连接器存储...

    java中solr的笔试题-note:个人学习信息

    java中solr的笔试题 ...学会使用,特别对于spring框架,理解其原理,深度mybatis源码。 spring/spring MVC/Spring Cloud/Spring Boot django/flask mybatis 存储 对于数据存储类的技术栈,主要是在缓存

Global site tag (gtag.js) - Google Analytics