美文网首页
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