美文网首页
scala入门(1)

scala入门(1)

作者: G__yuan | 来源:发表于2018-01-20 18:39 被阅读0次

    1.Scala编译器的安装

    1.1.安装JDK

    因为Scala是运行在JVM平台上的,所以安装Scala之前是要安装jdk的,安装jdk的方法,在此处省略。

    1.2安装Scala

    1.2.1Windows安装Scala编译器

    访问官网http://www.scala-lang.org/,下载Scala编译器安装包,安装包分两种:一种是免安装的,下载之后解压,配置环境即可。一种是后缀名为.msi的安装包,下载之后点击下一步就OK了。

    安装完之后,可以在cmd中直接输入scala,然后就进入scala的世界了;

    1.2.2Linux安装Scala编译器

    下载Scala地址http://downloads.typesafe.com/scala/2.10.6/scala-2.10.6.tgz然后解压Scala到指定目录

    tar -zxvf scala-2.10.6.tgz -C /usr/java

    配置环境变量,将scala加入到PATH中

    vi /etc/profile

    export JAVA_HOME=/usr/java/jdk1.7.0_45

    export PATH=$PATH:$JAVA_HOME/bin:/usr/java/scala-2.10.6/bin

    1.2.3Scala开发工具安装

    目前主流开发工具有两种:Eclipse和IDEA,这两种都有相对应的Scala插件。

    如果使用Eclipse,直接到Scala官网下载即可http://scala-ide.org/download/sdk.html。

    如果使用IDEA,可以到http://www.jetbrains.com/idea/download/下载社区免费版,点击下一步安装即可。

    2.Scala基础

    2.1声明变量

    object VariableDemo {

    def main(args: Array[String]) {

        //使用val定义的变量值是不可变的,相当于java里用final修饰的变量

          val i=1

          //使用var定义的变量是可变的,在Scala中鼓励使用Val

          var s ="hello"

          //scala编译器会自动推断变量的类型,必要的时候可以指定类型

          val str :String ="G_yuan"

      }

    }

    2.2常用类型

    Scala和java一样,有7种数值类型:Byte,Char,Int,Long,Float和Double(无包装类型)和一个Boolean类型

    2.3条件表达式

    object ConditionDemo {

    def main(args: Array[String]):Unit = {

          val x =1

          //判断x的值,将结果赋给y

          val y =if (x >0)1 else -1

          //支持混合类型表达式

          val z =if(x >1)1 else "G_yuan"

          //如果缺失else,相当于if(x>2)1 else ()

          val m =if(x >2 )1

          //在scala中每一个表达式都有值,scala中有个Unit类,写做(),相当于Java中的void

          val n =if(x >2)1 else ()

          //if 和 else if

          val k =if (x <0 )0

          else if (x >=1)1 else {

                  -1

           }

        println(k)

        }

    }

    2.4块表达式

    object BlockExpressionDemo {

    def main(args: Array[String]) {

          val x =0

          //在scala中{}中课包含一系列表达式,块中最后一个表达式的值就是块的值

         // 下面就是一个块表达式

          val result = {

          if (x <0){

                 -1

            }else if(x >=1) {

                1

            }else {

            "error"

            }

    }

        //result的值就是块表达式的结果

          println(result)

    }

    }

    2.5循环

    在scala中有for循环和while循环,用for循环比较多;

    for循环语法结构:for(i <- 表达式/数组/集合 )

    2.6调用方法和函数

    scala中的+ - * % 等操作符的作用与java一样,位操作符 & | ^ >>  << 也一样,只是有一点特别的:这些操作符实际上是方法。eg:

    a + b 是方法调用的简写: a.+(b)

    a 方法 b 可以写成 a.方法(b)

    2.7定义方法和函数

    2.7.1定义方法

                        (下面定义方法的结构,一定要铭记于心,做的心中有码,信手拈来)

    方法的返回值类型可以不写,编译器会自动推断出来,但是对于递归函数,必须指定返回类型

    2.7.2定义函数

    第一种定义函数方式

    第二种定义函数方式

    val func : Int =>String = {x => x.toString}

    上面两种定义函数方式可以对比js中函数定义的方式去理解(这只是类比帮助记忆,其实并没有什么可比性,语法嘛,创造者规定什么就是什么啦。笑脸):

    第一种类比js中的 var func = function(){}

    第二种类比js中的 function func(){}

    2.7.3方法和函数的区别

    在函数式编程语言中,函数是“头等公民”,他可以像任何其他数据类型一样被传递和操作

    eg:首先定义一个方法(方法接受的参数是一个函数),在定义一个函数,然后将函数传递到方法里面

    object MethodAndFunctionDemo {

    //定义一个方法m2 参数要求是有一个函数,函数的参数必须是连个Int类型

    //返回值类型也是Int类型

     def m2 (f : (Int ,Int)=>Int) :Int = {

            f(2,6)

       }

        //定义一个函数f1 ,参数两个Int类型,返回值一个Int类型

        val f1 = (x :Int ,y:Int)  => x + y

        //在定义一个函数f2

        val f2 = (x:Int,y:Int) => x * y

        def main(args: Array[String]):Unit = {

         //调用m2并传入f1

         val res =m2(f1)

        println(res)//结果8

      }

    }

    方法,如果直接写方法名执行时,是会报错的,但是函数不会

    2.7.4将方法转换成函数(神奇的下划线)

    相关文章

      网友评论

          本文标题:scala入门(1)

          本文链接:https://www.haomeiwen.com/subject/izytaxtx.html