scala学习--可扩展的语言

     从名称可知“可扩展的语言”说明scala确实有它的强大之处-可扩展性,故scala应用范围很广,从简单的脚本到构建大型系统。

  scala增加的新类型

       引入 BigInt类型(从scala.BigInt引入,其实它的来源是java的BigInteger)如下面的例子

        def factorial(x:BigInt):BigInt= if(x==0) 1 else x*factorial(x-1)        调用时直接factorial(20)。

  scala增加了新的控制结构

       引入新的控制结构-actor--并发编程结构,actor是能够实现线程模型上的并发抽象,可以通过彼此间传递消息来实现通信,actor可以执行两种基本操作

       消息的发送和接受。发送操作,用惊叹号表示,可以把消息发给actor.如下举例

        recipient !msg

        发送是异步的,每个actor都有信箱(mailbox)把进入的消息排成队列,actor通过receive代码块处理信箱中收到的消息

        receive{

              case Msg1=>..........相应的处理1

              case Msg2=>.............相应的处理2

         }

        当信箱中有符合case 消息时将会相应的匹配并处理。

        在这里再举一个scala的actor实现校验和(cheksum)计算器服务的简单例子:

        actor {

             var sum=0

             loop{

                       receive{

                                  case Data(bytes)   =>sum+=hash(bytes)

                                  case GetSum(requester)  =>requester ! sum

                                 }

                      }


             }

          这个actor首先定义一个名为sum的本地变量,并赋初值0,然后就等待在消息循环中,不断的用receive段接受消息,匹配处理

           其中requester!sum把当前sum值发回给requester.requester字段嵌入在GetSum消息里,它通常指向创建请求的actor.


    是什么让scala有扩展性呢?

       其实很简单它是结合面向对象和函数式编程的特点,这些在后面的学习中会体现出它的特点。

    scala又是高级的

        val nameHasUpperCase=name.exists.(_.isUpperCase)  其中_是站位符,代码看起来

    scala是静态类型的

        什么是静态类型系统呢?其含义是你可以根据保存和计算的值的类型认定变量和表达式。如若感觉抽象可以参考http://blog.csdn.net/mycoolx/article/details/6082187

     这一小节就简单介绍一下scala的一些特性,具体内容见下章节

你可能感兴趣的:(基础学习篇)