scala入门(1)

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将方法转换成函数(神奇的下划线)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容