`
alanwu
  • 浏览: 200655 次
  • 性别: 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
分享到:
评论

相关推荐

    快学Scala-课后习题答案-源码

    1. **基础语法**: Scala的基础语法与Java相似,但更加简洁。了解变量声明、数据类型(包括基本类型和引用类型)、控制流结构(如if-else、for循环、while循环)以及函数定义等是入门的第一步。 2. **面向对象编程**...

    scala-sorts:scala中的排序算法

    通过阅读和理解这些代码,你可以更好地掌握各种排序算法的原理,并学会在 Scala 中高效地使用它们。 学习和比较这些排序算法对于提升编程能力、理解算法性能至关重要。在实际应用中,应根据数据特性和性能需求选择...

    scala-course-2021-spring

    **Scala课程2021春季版** 这门课程聚焦于使用Scala 3进行软件开发,一个强大而富有表现力的...通过这门课程,你将不仅学会Scala 3编程,还能掌握高效构建和管理Scala项目的工具,为你的开发生涯增添一份宝贵的技能。

    scalaz-scala-exchange

    "如何学会停止担心并爱上单子"这部分描述可能是指学习Scalaz过程中对单子这一抽象概念的理解和应用。 首先,我们需要理解什么是单子(Monad)。在计算机科学中,单子是具有绑定操作(flatMap或&gt;&gt;=)和单位元...

    scala-learn:scala学习笔记

    理解这些概念是学习Scala的第一步。 2. **类与对象** Scala中的类和对象是面向对象编程的核心。与Java不同,Scala的类可以有多个构造函数,且一切皆为对象。理解`case class`和`object`的区别对于掌握Scala的面向...

    Scala编程实战基础教程

    Scala编程实战基础教程是一本专为初学者设计的教程,旨在引领读者逐步掌握Scala这门强大的多范式编程语言。Scala结合了面向对象和函数式编程的特性,使其在处理大数据和分布式计算领域,如Apache Spark,表现出色。...

    IDEA 创建scala工程并打指定的依赖包

    通过上述步骤,你已经学会了如何在IDEA中创建Scala项目并打包指定依赖。这对于Scala项目的开发和部署非常有帮助。记得定期更新IDEA版本和Scala插件,以获得最佳的开发体验。此外,合理配置依赖可以显著提高项目的...

    Programming in Scala 2nd Edition

    ### 编程在Scala:第二版 ...通过本书的学习,读者不仅能掌握Scala语言本身,还能学会如何利用Scala构建可扩展且高性能的应用程序。对于希望深入了解Scala及其生态系统的人来说,这是一本必读的书籍。

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

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

    Scala集合.md

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

    actors in scala

    1. Scala actors库是由Philipp Haller创建的,他也是Scala标准库actors开发的直接参与者,这说明了Scala在并发处理和分布式系统编程方面的深厚背景。 2. Actors模型是一种基于轻量级进程和消息传递的并发模型,这与...

    Programming Scala Tackle Multi-Core Complexity on the Java Virtual Machine

    通过阅读本书,Java开发者将能够快速掌握Scala,理解其独特之处,并学会如何在多语言环境中最佳地利用这门语言。本书尤其适合那些希望在多核时代保持技术竞争力的程序员,因为它不仅提供了理论指导,还包含了大量...

    Scala编程中文版1

    **Scala编程中文版1** 本书《Scala编程》是由Scala语言的创始人Martin Odersky,以及他的合作者Lex Spoon和Bill Venners共同编著的。它深入介绍了Scala这一多范式编程语言,旨在帮助读者从初级到高级全面掌握Scala...

    Scala.in.Action

    ### Scala in Action:深入探索Scala编程语言 #### 标题:Scala in Action ...通过本书的学习,读者不仅能够深入了解Scala的核心概念,还能学会如何利用Scala来解决实际问题,构建高效稳定的软件系统。

    Functional Programming in Scala

    《Scala中的函数式编程》一书深入探讨了函数式编程(FP)的核心概念与实践技巧,选择Scala作为实现语言,但其传授的知识可应用于任何支持FP特性的编程语言。本书旨在为读者打下坚实的基础,使其能够编写实质性的函数...

    上手提示:使用新版IDEA+Maven+Scala编写Spark程序

    通过上述步骤,我们不仅了解了如何在IDEA 2017版中创建Scala项目并使用Maven管理依赖,还学会了如何利用IDEA的内置功能来提高开发效率。Scala与Spark的结合为大数据处理带来了极大的便利,而IDEA作为一款强大的集成...

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

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

    Manning Scala in Depth pdf

    ### Scala in Depth:一本融合函数式编程与面向对象编程的宝典 #### 一、书籍简介 《Scala in Depth》是一本由...通过阅读本书,读者将能够掌握Scala的核心概念,并学会如何将其应用于实际项目中,提升编程技能。

    scala handbook

    1.速度:Scala利用JVM的高度优化,提供了比传统动态语言更好的性能。 2.易用的数据结构:Scala库提供了许多易于使用的数据结构,如列表、数组、集合等。 3.OOP和FP的结合:Scala允许开发者使用面向对象和函数式编程...

Global site tag (gtag.js) - Google Analytics