• scala入门1


    在Scala中,分号是可选的,你可以写或者不写;定义类和构造函数,Java中一般这么写 

    1. public class MyTest {  
    2.   
    3.     private int id;  
    4.       
    5.     private int index;  
    6.       
    7.     public MyTest(int id, int index) {  
    8.         this.id = id;  
    9.         this.index = index;  
    10.     }  
    11. }

    而在Scala中,可以这么写 class MyTest(id: Int, index: Int)  

    除了这些特性,尤其值得一提的是Scala是静态类型的语言,它支持指令式的编程,但更推荐的使用函数式的编程。比如下面的java代码 

    1. object HelloWorld {  
    2.   
    3.   def main(args: Array[String]): Unit = {  
    4.     var i = 0  
    5.     while(i < args.length) {  
    6.       println(args(i))  
    7.       i += 1  
    8.     }  
    9.   } 

    我可以使用scalac HelloWorld.scala使他生成class字节码,也可以直接在JVM上执行, 
    scala HelloWorld.scala Hello World 
    打印结果将是 Hello World 
    大家不觉得这样有一丁点儿复杂吗,来看看Scala的函数式的编程是什么样的 

    scala代码:
    1. object HelloWorld {  
    2.   
    3.   def main(args: Array[String]): Unit = {  
    4.     args.foreach(arg => print(arg + " "))  
    5.   }  
    6.   
    7. }  


    arg就是你临时定义的变量,Scala默认为其开辟了临时的String变量arg。 

    体验了最初的简单函数式风格,我们再看下Scala中如何使用数组,在Java中,使用一个最简单数组是这样的 

    Java代码
     
    • public class ArrayTest {  
    1. public static void main(String[] args) {  
    2.         String[] strs = new String[]{"Hello", "World", "!"};  
    3. for(String str : strs) {  
    4.             System.out.println(str);  
    5.         }  
    6.     }  

    在Scala中,同样是通过new来实例化对象,实例化过程中,可以用值和类型使对象参数化,使用值参数化实例可以通过把值传递给构造器的圆括号来实现,比如,Scala中数组是这么实现的,值得一提的是,在Scala中,数组是可变数据结构,这是和Java中有区别的地方 

    1. scala 代码

      object ArrayTest {  

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

          var greetString = new Array[String](3)  

          greetString(0) = "Hello"  

          greetString(1) = "World"  

          greetString(2) = "!"  

      for(i <- 0 to 2) {  

            println(greetString(i))  

          }  

        }  

      }

      i <- 这个表达式是表示左边的涵盖在右边范围之内。 
      下面我们来看看List,在Java中,List是可变的结构序列,而在Scala中,List是不可变的,在Scala中,List是不可变的数据结构,这么设计是为了函数式编程而设计的,奇特的是,Scala中并不需要通过new来创建List对象,比如下面一个例子,我创建了两个集合,并且把它们循环打印出来。 

      scala代码 
      1. def main(args: Array[String]): Unit = {   
      2.     var list1 = List("aaa", "bbb", "ccc")  
      3.     var list2 = List("ddd")  
      4.     var list3 = list1 ::: list2  
      5.     list3.foreach(list => print(list + " "))  //这叫闭包,在运行时创建的函数值(对象)就是闭包
      6.   }  


      打出的结果就是 aaa bbb ccc ddd 


       
  • 相关阅读:
    你知道线程池是如何退出程序的吗?
    华为云GuassDB(for Redis)发布全新版本推出:Lua脚本和SSL连接加密
    分布式消息流平台:不要只想着Kafka,还有Pulsar
    新来的前端小姐姐问:Vue路由history模式刷新页面出现404问题
    1ms的时延,10Gbps速率…5G通信技术解读
    一分钟带你了解Huawei LiteOS组件开发指南
    资深Linux 系统管理员常用的15个很好用的Cron工作示例
    C语言中动态内存分配的本质是什么?
    Python连载8datetime包函数介绍 心悦君兮君不知
    Python连载7time包的其他函数 心悦君兮君不知
  • 原文地址:https://www.cnblogs.com/honeybusybee/p/4708239.html
Copyright © 2020-2023  润新知