zoukankan      html  css  js  c++  java
  • Scala基础简述

    * Scala基础简述

    本文章作为Scala快速学习的教程,前提环境是:我假设在此之前,你已经学会了Java编程语言,并且我们以随学随用为目标(在此不会深度挖掘探讨Scala更高级层次的知识)。其中语言基础部分,不再做大量重复的无意义工作,我会直接使用RUNOOB.COM中的一些例子做一些整合,OK,我们开始。

    * Scala行业习惯式开场

    Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。

    ** Scala面向对象:

    它是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由类和特质描述。

    ** Scala静态类型:

    Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。

    ** Scala在JVM上运行:

    Scala被编译成由Java虚拟机执行的Java字节码,所以由Scala写好的程序编译后可以运行在Java虚拟机中。

    ** Scala可以执行Java代码:

    Java和Scala代码可以非常方便的互相调用,惊不惊喜?意不意外?

    ** Scala Web框架:

    Lift框架

    Play框架

    Bowler框架

    * Scala安装及环境配置

    好,扯完犊子之后,我们首先确保你的JDK配置是没有问题的,因为Scala依赖JAVA,Java如何安装配置,在此不再赘述。

    Windows:

    Windows环境下需要用到的工具包打包下载,包含了IDE工具,还包含一些东西请自行查看:

    链接:http://pan.baidu.com/s/1o87EIbo 密码:h59u

    解压scala到指定目录,然后配置环境变量:

    SCALA_HOME:

     
     

    PATH中添加:

    %SCALA_HOME%/bin

    验证是否安装成功,打开cmd执行:

    scala -version,如图:

     
     

    Linux:

    Linux环境下需要用到的工具包打包下载,包含了IDE工具,还包含一些东西请自行查看:

    链接:http://pan.baidu.com/s/1kUJFUYj 密码:cy6q

    解压scala安装包到指定目录,然后配置/etc/profile,添加如下:

    ##SCALA_HOME

    SCALA_HOME=/opt/modules/cdh/scala-2.10.4

    export PATH=$PATH:$SCALA_HOME/bin

    验证是否安装成功,打开终端或者CRT执行:

    scala -version,如图:

     
     

    * Scala的IDE工具

    在本系列教程的学习中,将JetBrains作为我们的编程工具,如果你有其它喜好,请另行选择即可。安装好之后,进行简单的引导配置即可,注意:记得安装Scala插件(可以在线,也可以离线,离线包已存放于分享的压缩包中),习惯使用Android Studio或者PyCharm的朋友,应该会很熟悉了,完成之后,如图所示:

     
     

    注意:在Linux中,不可以使用CRT来打开,在Linux系统终端中,执行:

    $ /opt/modules/idea-IC-141.178.9/bin/idea.sh,即可启动该编译工具。

    * 第一个Scala程序

    不再赘述如何使用记事本,然后scalac命令编译程序(编译后会出现.class字节码文件,因为Scala最终也是运行在JVM中嘛),最后在CMD或者Linux终端中运行这个过程了,有编程基础的同学,你们都懂得。号称可以让你理解整个程序的编译原理,其实即使执行了这个过程,大多数人对整个编译原理也不能够理解,所以不再废话,我们直接使用IDE工具来构建第一个Scala程序。

    Step1、点击New Project后,出现如下界面:

     
     

    Next:

     
     

    注意红框内的内容,记得配置Scala的SDK和Java的JDK,还有你的项目的位置以及项目名称,Finish后就OK了。

    然后呢,我在左边的树状图中,在src目录下新建了一个main这个package,在main包下,我新建了一个Scala Object,依次在main包上“右键”选择“New”,接着“Scala class”,然后如图(蓝色框中的内容刚开始为class,修改为Object即可):

     
     

    完成后,在当前HelloWorld.scala文件中编写如下内容即可:

     
     

    然后在代码的编辑区域中按右键,选择“Run Hello World”即可,运行成功,如图:

     
     

    * Scala数据类型

    和Java的数据类型大致一样,在此,只说一些相比于Java不同的数据类型:

    Unit:表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

    Nothing:Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。

    Any:Any是所有其他类的超类

    AnyRef:AnyRef类是Scala里所有引用类(reference class)的基类

    其余:Byte、Short、Int、Long、Float、Double、Char、String、Boolean、Null都和Java一样

    * Scala变量与常量

    变量与常量的定义不再赘述。直接讲述在Scala中以什么样的形式来定义变量和常量。

    变量:使用var关键字来声明变量

     
     

    常量:使用val关键字来声明常量

     
     

    * Scala元组

    简单理解:元组是不可变的,元组可以包含不同类型的元素,元组中元素的访问下标(索引)从1开始。

     
     

    * Scala函数

    Scala 有函数和方法,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。Scala还允许在函数中定义函数(内嵌函数),函数名也可以是如下特殊字符:+, ++, ~, &,-, -- , \, /, :等等

    函数定义方法:

    def关键字+函数名+参数体+返回类型+方法体,如:

     
     

    * Scala数组

    Scala 语言中提供的数组是用来存储固定大小的同类型元素,与元组不同的是,存储的元素必须都是相同的类型。

     
     

    二维数组:

     
     

    数组的合并:

     
     

    * Scala集合

    ** List:List的特征是其元素以线性方式存储,集合中可以存放重复对象。

    请参考:List

    ** Map:Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。

    请参考:Map

    ** Set:Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

    请参考:Set

    * Scala函数

    请参看:函数

    * Scala 闭包

    请参看:闭包

    * Scala类和对象

    请参考:类和对象

    * Trait

    请参考:Trait

    * Scala异常处理

    请参考:异常处理

    * 模式匹配

    请参考:模式匹配

    * Apply操作处理

    请参考:提取器

    * Scala文件IO

    请参考:文件IO

    * 总结

    scala的基础学习请类比Java+C#+Python,大同小异,但需要仔细体会其中差别。


    个人微博:http://weibo.com/seal13

    QQ大数据技术交流群(广告勿入):476966007



    作者:Z尽际
    链接:https://www.jianshu.com/p/bc4289ed279c
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    PAIP.MYSQL数据库比较
    paip.验证码识别----判断汉字还是英文
    SQLServer2008客户端软件
    paip.多个TOMCAT共存在一台主机上配置方法
    paip.银行卡号的发卡行归属地查询
    paip.获取当前实际北京时间API
    PAIP.HIBERNATE ORA02289 sequence does not exist的解决
    C51与汇编语言混合编程之一
    KEIL C51高级编程之二
    可重入函数与不可重入函数(转)
  • 原文地址:https://www.cnblogs.com/wzlbigdata/p/8277717.html
Copyright © 2011-2022 走看看