01scala环境搭建和基础

1.环境搭建

  1.下载安装jdk1.7以上版本,并进行环境变量的配置

  2.下载scala-2.10.4.msi,安装后进行环境变量的配置

  3.下载scala-SDK-4.1.1-vfinal-2.11-win32.win32.x86.zip,解压双击运行

2.scala基础

  1.println  控制台输出   readLine  控制台输入

  2.方法的定义:

    def 方法名 (参数名:参数类型):返回值类型={

      方法体

    }

    注意:

      1.如果没有返回值,可以省略

      2.方法调用 方法名(参数)  ,如果没有参数,可以省略()

      3.方法的最后一行通常作为函数的返回值

  3.for循环语句:

    for(变量名 <- 集合名){操作}

  4.集合操作

    1.Tuple 创建(元素1,元素2,元素3)   角标从1开始

    2.Array  创建 Array(元素1,元素2)

    3.Map  创建  Map(键 -> 值,键->值)

  5.文件操作

    val file=Source.fromFile("F:\工作\项目\china_life.sql")
        val file2=Source.fromURL("http://www.baidu.com")
       for(line <- file2.getLines()) println(line)

3.控制结构

  1.scala并没有提供break或continue语句来退出循环,当需要使用break时可以使用以下三种方式:

    1.使用boolean来控制循环

    2.使用嵌套信息,在从函数中使用return

    3.使用Breaks对象的break方法

      import scala.util.control.Breaks._

      for(i<-1 to 10){
            for(j<-10 to 20)
              println(i,j)
              if (i==5) break
        }

  2.高级for循环  for(i<-1 to 3 if i !=2;j<-1 to 3 if i!=j) println(i,j)       //(1,2),(1,3),(3,1),(3,2)

   for推导式  var a=for(i <- 1 to 10) yield i%2    //Vector(1, 0, 1, 0, 1, 0, 1, 0, 1, 0)

  3.函数定义时必须给出所有参数的数据类型,但是只要不是递归调用,就不需要指出返回类型

    def fac(n:Int): Int = if(n<=0) 1 else n*fac(n-1)

    1.默认参数和带名参数:

      def decorate(str:String,left:String="[",right:String="]")=left+str+right
          println(decorate("tom"))   //[tom]
          println(decorate("tom", "<<"))   //<<tom]
          println(decorate(right="<", str="tom"))   //[tom<

    2.可变参数:

      def sum(nums:Int*)={
            var result=0
            for(num <-nums) result+=num
            result
        }

     此时参数不能为一个集合类型,如果想把集合中的元素供该方法使用可以使用 【集合:_*】 的方式进行传入

     sum(1 to 10:_*)    //55

   3.过程:不返回值的函数的特殊表示法,函数体包含在花括号中间,但没有前面的=,返回值类型就是Unit

      def box(s:String){
            var border = "-"*s.length+"-- "
            print(border+"|"+s+"| "+border)
         }

   4.懒值:在变量前添加lazy修饰符,将延迟变量内容的加载,直到变量被首次访问时才被加载

    lazy val file=Source.fromFile("F:\工作\项目\china_life.sql")  //即使所指定的文件不存在,只要不使用变量file,程序就不会报错,但如果去掉lazy,就会立即报错

原文地址:https://www.cnblogs.com/lifeone/p/4912748.html