关于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,本篇到此结束。
未完待续
分享到:
相关推荐
1. **基础语法**: Scala的基础语法与Java相似,但更加简洁。了解变量声明、数据类型(包括基本类型和引用类型)、控制流结构(如if-else、for循环、while循环)以及函数定义等是入门的第一步。 2. **面向对象编程**...
通过阅读和理解这些代码,你可以更好地掌握各种排序算法的原理,并学会在 Scala 中高效地使用它们。 学习和比较这些排序算法对于提升编程能力、理解算法性能至关重要。在实际应用中,应根据数据特性和性能需求选择...
**Scala课程2021春季版** 这门课程聚焦于使用Scala 3进行软件开发,一个强大而富有表现力的...通过这门课程,你将不仅学会Scala 3编程,还能掌握高效构建和管理Scala项目的工具,为你的开发生涯增添一份宝贵的技能。
"如何学会停止担心并爱上单子"这部分描述可能是指学习Scalaz过程中对单子这一抽象概念的理解和应用。 首先,我们需要理解什么是单子(Monad)。在计算机科学中,单子是具有绑定操作(flatMap或>>=)和单位元...
理解这些概念是学习Scala的第一步。 2. **类与对象** Scala中的类和对象是面向对象编程的核心。与Java不同,Scala的类可以有多个构造函数,且一切皆为对象。理解`case class`和`object`的区别对于掌握Scala的面向...
Scala编程实战基础教程是一本专为初学者设计的教程,旨在引领读者逐步掌握Scala这门强大的多范式编程语言。Scala结合了面向对象和函数式编程的特性,使其在处理大数据和分布式计算领域,如Apache Spark,表现出色。...
通过上述步骤,你已经学会了如何在IDEA中创建Scala项目并打包指定依赖。这对于Scala项目的开发和部署非常有帮助。记得定期更新IDEA版本和Scala插件,以获得最佳的开发体验。此外,合理配置依赖可以显著提高项目的...
### 编程在Scala:第二版 ...通过本书的学习,读者不仅能掌握Scala语言本身,还能学会如何利用Scala构建可扩展且高性能的应用程序。对于希望深入了解Scala及其生态系统的人来说,这是一本必读的书籍。
资源包含《Scala编程》第3版英文版和第3版源代码,Scala编程第3版,目前是最新版,支持Scala... 因此学习这本书,不单单是学会了scala语言本身,更重要的是扩展了视野,提升了思维能力和培养了考虑问题的思维方式方法。
学习spark之前,大家必须先学会Scala这门语言,他是spark的基础,这里总结了一下Scala集合的相关知识点
1. Scala actors库是由Philipp Haller创建的,他也是Scala标准库actors开发的直接参与者,这说明了Scala在并发处理和分布式系统编程方面的深厚背景。 2. Actors模型是一种基于轻量级进程和消息传递的并发模型,这与...
通过阅读本书,Java开发者将能够快速掌握Scala,理解其独特之处,并学会如何在多语言环境中最佳地利用这门语言。本书尤其适合那些希望在多核时代保持技术竞争力的程序员,因为它不仅提供了理论指导,还包含了大量...
**Scala编程中文版1** 本书《Scala编程》是由Scala语言的创始人Martin Odersky,以及他的合作者Lex Spoon和Bill Venners共同编著的。它深入介绍了Scala这一多范式编程语言,旨在帮助读者从初级到高级全面掌握Scala...
### Scala in Action:深入探索Scala编程语言 #### 标题:Scala in Action ...通过本书的学习,读者不仅能够深入了解Scala的核心概念,还能学会如何利用Scala来解决实际问题,构建高效稳定的软件系统。
《Scala中的函数式编程》一书深入探讨了函数式编程(FP)的核心概念与实践技巧,选择Scala作为实现语言,但其传授的知识可应用于任何支持FP特性的编程语言。本书旨在为读者打下坚实的基础,使其能够编写实质性的函数...
通过上述步骤,我们不仅了解了如何在IDEA 2017版中创建Scala项目并使用Maven管理依赖,还学会了如何利用IDEA的内置功能来提高开发效率。Scala与Spark的结合为大数据处理带来了极大的便利,而IDEA作为一款强大的集成...
本书循序渐进地介绍了Scala的函数式编程基础,虽然篇幅...读者可以学会使用Scala静态语言的强大功能创建简洁、可扩展、高度可并行的代码。对于多核时代JVM上的并发编程,Scala是绝好的工具,而本书是你必不可少的向导。
### Scala in Depth:一本融合函数式编程与面向对象编程的宝典 #### 一、书籍简介 《Scala in Depth》是一本由...通过阅读本书,读者将能够掌握Scala的核心概念,并学会如何将其应用于实际项目中,提升编程技能。
1.速度:Scala利用JVM的高度优化,提供了比传统动态语言更好的性能。 2.易用的数据结构:Scala库提供了许多易于使用的数据结构,如列表、数组、集合等。 3.OOP和FP的结合:Scala允许开发者使用面向对象和函数式编程...