`
shangjava
  • 浏览: 1186286 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Scala初次接触

阅读更多

文章整合了一些内容,也是我自己看了过后的心得,不用作为纯技术文章来阅读,有兴趣可以大家一起探讨:silentbalanceyh@126.com,介绍性的东西不多讲,直接进入主题。我尽量靠近一个开发者的学习流程来写,这样可能比较有作用点,因为很多资料可能比较适合专家阅读,而我只是个初学者。

1.Scala语言的基本环境

  先提供一个本人的操作系统平台和环境,可能不同的平台安装不一样,免得出现环境冲突:

OS:Windows 7 Ultimate 64bit

JDK:jdk-6u15-windows-i586(32bit)

Scala语言下载地址:http://www.scala-lang.org/downloads/distrib/files/scala-2.7.5.final-installer.jar

Eclipse Scala语言插件的更新地址:http://www.scala-lang.org/scala-eclipse-plugin

  需要注意的是:

1.Scala语言可以和Java语言相互操作,scalac编译命令会将源文件编译成java的class文件,而且可以从scala里面调用所有java里面的类,所以Scala的安装需要java环境,而且java和scala能够进行相互调用操作。

2.Eclipse插件的系统要求:

1)JDK的环境推荐是version 1.6.0 update 14,最低要求是version 5

2)Eclipse版本要求,推荐是3.5,最低要求是3.4.2版本

  下载下来的安装包在Windows下边是.jar的文件,即在拥有JDK的环境里面可以直接通过双击的方式来执行,Eclipse的插件安装操作菜单如下:

Help -> Install New Software... -> Add...

然后录入名称和下载插件更新地址,直接下一步直到完成,Scala语言安装完结过后,就可以使用Scala提供的命令了,和java类似,有两个命令是常用的:scalac,scala;不一样的是,因为scala是函数对象混合式语言,所以在你单独输入scala命令的时候,如同python这种函数式语言一样,可以启动scala解释器,如果使用Linux Shell熟悉的人很容易理解,这里实际上就是shell方式书写scala表达式以及程序。单独录入scala命令的时候显示的图片如下:

scala启动画面

这样就启动了scala解释器。

2.Scala解释器的基本使用:

按照上边步骤启动Scala解释器过后,就可以使用一下Scala了。先看几个简单的例子:

scala> 3 + 4

录入上边代码过后【蓝色部分为手动录入】,屏幕上将会输出

res0:Int = 7

在上边这一行里面,包括了一下几个部分:

res0是系统自动分配的一个标识符

Int是这个表达式执行结果返回值的类型

=在这里不是赋值操作

7就是录入表达式子 3 + 4 的返回值

  这里Int取自于scala默认载入包里面的类Int,在Scala语言里面,包语义和java里面的包语义近似,而这里Scale的Int类型和Java里面的int类型是可以认为是等价的,因为scala语言本身是可以和java进行交互的,所以java里面的原始数据类型在scala里面都可以找到对应的类型,例如Scala里面的Float对应java语言里面的float原始类型。在没有任何说明的情况下,系统生成的标识符一般格式是resX的方式。而且如果不关闭解释器,这个变量会一直存在,如同Erlang的Shell里面的执行方式,比如紧接着刚刚的例子录入:

scala> res0 * 3

解释器将会输入以下:

res1:Int = 9

  解释器最终会等待一个完整的可执行的语句在录入的时候才会执行,而scala解释器和Python的解释器一样,也是支持多行输入的,比如在解释器里面录入:

scala> val multiLine =

| "MultiLine Hello."

在录入第一行过后,直接敲回车,会出现开始的|,表示可以继续录入,直到录入了完整的scala语句为止,屏幕会在执行的时候输出:

multiLine:java.lang.String = MultiLine Hello.

而且这里可以看出直接赋值的scala字符串和java里面的String类型的变量是几乎等价的,如果在录入过后,您觉得需要终止输入,只需要敲两次回车就可以中断

scala> val oops =

|

|

You typed two blank lines. Starting a new command.

scala>

解释器的推出直接输入下边的命令:

scala>:quit

或者

scala>:q

  这里插入一段:

  在scala语言里面,定义量的关键字常用的是valvar,这两者有个细微的区别,val定义的量是不可变量,若要进行再次赋值的时候会报错,而var量是可变量,可以进行改变,跟平时我们编程的方式有点相同。下图可以看出:

执行结果

  而在scala里面,未定义的变量是不能够使用的,比如从未定义过value3,录入value3的话会出现下边的输出:

未定义变量的输出

【这里我个人推测:scala解释器在解释整段脚本的时候,是使用的固定的内存分配,上边有一段val synthvar$2 = value3,所以我们在脚本中定义的每个变量实际上系统默认是用val方式来进行定义的,这一点和JVM类似,定义的都是一个变量的副本,当然这里使用的是原始变量定义方式,不牵涉到类和对象这种复杂的数据类型,所以仅仅是原始类型的分配方式。而分配过程本身实际上是在解释器里面定义的一个变量副本进行操作】

3.Scala中的函数:

  Scala中的函数定义方式如下:

scala> def max(x: Int, y: Int): Int = {...}

  所有的Scala函数都是以def关键字开始,其次跟随函数的名,然后在一个大小括号里面用“,”定义一个函数的参数列表,末尾跟着函数的返回值。上边这个函数的函数签名为:

  max:(Int,Int)Int

  仔细解析一下上边的函数的定义方式:

def是一个关键字,属于函数的定义的开始

max是函数名

xy是形参名

:Int是函数的返回值

{...}中的内容是函数体

  一般情况下,Scala解释器需要我们在编写代码的过程提供一个函数的返回值,如果这个函数是递归的,这种情况,我们必须显示声明函数的返回值类型,而有些类型是不需要提供返回值的。所以上边的函数可以写成:

scala> def max(x:Int,y:Int) = ...

  上边这种情况也可以不用提供函数的返回值,函数调用就和其他调用方式差不多,直接录入max(3,5)就可以直接调用了,不过Scale里面的无参数的函数还可以使用这种方式调用:

scala> def hello() = println("Hello World")

hello:()Unit

  这种情况下,定义了一个Scala函数,它的返回值是()Unit,函数名是:hello,对了这里忘了说,Scala语言在函数定义的时候,直接从解释器里面录入函数定义过后,解释器的输入为函数签名,即上边的hello:()Unit部分。若一个函数返回的是空,则在Scala语言里面就是返回()Unit,Scala语言的Unit类型和Java里面的函数void类型是等价的。因此,如果要调用一个不带任何参数的函数可以直接在解释器里面输入:

scala> hello()

或者一种不良好的风格:

scala> hello

  Scala里面的主函数入口:

  def main(args:Array[String])

4.简单的Hello World例子

  1)编写HelloWorld.scala文件,文件内容如下:

object HelloWorld{

def main(args:Array[String]){

println("Hello World")

}

}

  2)然后使用scalac命令进行编译,进入命令提示行:

scalac HelloWorld.scala

  3)再使用scala命令执行该文件:

scala HelloWorld

  在编译过后,会生成两个文件一个HelloWorld.class和HelloWorld$.class两个文件,这里其实还有一种执行方式就是:

java HelloWorld

  不过这种执行方式需要注意classpath,在Java里面,public class的名称和文件名必须是一样的,但是Scala没有这种要求,但是还是需要使用一种比较严格的规范来执行可能好点。

5.总结
  
初次接触Scala的时候遇到了不少的问题,这些问题等我找到原因了过后再添加进入本日志,大概猜到了问题来源,跟我的环境有关。若本文有不合适的地方,请来Email:
silentbalanceyh@126.com

分享到:
评论

相关推荐

    scala sdk scala-2.12.3

    scala-2.12.3 scala-2.12.3 scala-2.12.3 scala-2.12.3

    scala-sbt-scala编译工具

    scala 编译工具 sbt 安装包。 Little or no configuration required for simple projects Scala-based build definition that can use the full flexibility of Scala code Accurate incremental recompilation ...

    Scala编程实战.zip

    此文档是讲解实战Scala,希望对喜欢大数据的同学有所帮助!!! 学习Scala语言,不仅仅意味着熟悉新的API,更重要的是一种思维方式的转变。从原有的面向对象编程(OO)到函数式编程(FP)的思想。本书面向实际的使用场景...

    scala2.12.1Windows镜像包

    scala2.12.1Windows镜像包

    scala3 scala3 scala3 scala3 scala3

    scala3 scala3 scala3 scala3 scala3

    Scala函数式编程

    很大篇幅都放在,使用scala实现scala默认库文件的API中,通过对简单的函数式编程逻辑的介绍和实践,主要是实践,建立起来一个比较明晰的scala思维模式,或者叫函数式编程的思维模式。 2 无副作用的函数式编程,同时...

    scala五本经典资料集合

    scala是一个经典的语言,Scala代表了一个新的语言品种,它抹平了这些人为划分的界限。但是现在scala的相关学习资料不多,因此,本人总结了几篇写的较好的scala学习资料,包含<ScalaQuery_Commerzbank_2011><twitter-...

    scala 2.13.3 API 文档 Html离线版 scala-api.rar

    最新制作 scala 2.13.3 API 文档 Html离线版 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。

    scala编程中文pdf

    scala编程 33章 中文pdf Scala编程实战 目录 第1章字符串. 11 第2章数值39 第3章控制结构.60 第4章类和属性.103 第5章方法147 第6章对象170 第7章包和导入.190 第8章特质200 第9章函数式编程214 第10 章集合242 第...

    scala实战高清讲解

    scala编程进阶过程中不可或缺的书籍之一,详细介绍了scala语言的各种中高级语法,对于初学和高级开发人员有很大帮助

    最好的scala学习 课件

    最好的scala 学习课件,最好的scala 学习课件,学习spark必备

    eclipse插件 scala下载

    scala eclipse插件 拷贝到相应的目录即可使用,百度一大堆

    快学scala 完整

    快学scala 完整清晰版 大数据spark 主要的编程语言 快学scala 完整清晰版 大数据spark 主要的编程语言

    scala 3本书打包

    这个打包文件中包含了《SCALA程序设计-JAVA虚拟机多核编程实战》《Scala编程-中文-完整版》《Scala in Action》三本书,足以让你从scala入门到精通,让我们一起愉快的学习吧。spark,scala醉了醉了。哈哈

    scala SDK 2.10下载

    scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载...

    Scala实用指南

    本书是为想要快速学习或者正在学习 Scala 编程语言的 Java 开发者写的,循序渐进地介 绍了 Scala 编程语言的多个方面。 本书共分为 4 个部分:第一部分详细介绍 Scala 的一些基础知识,并和 Java 中的相关概 念进行...

    scala + mybatis 数据库查询

    这是一个简单实用的scala集成mybatis数据库查询代码,简单明了

    scala 安装包

    scala 安装包scala 安装包scala 安装包scala 安装包scala 安装包scala 安装包

    programing in scala中文版的scala教程哦

    programing in scala中文版的scala教程哦。

Global site tag (gtag.js) - Google Analytics