当前位置:   article > 正文

Flink中Java开发的必要辅助(一)——Scala_flink scala有什么特点

flink scala有什么特点

Flink中Java开发的必要辅助(一)——Scala

主要是一些基本的语法点

两者还是很像的,都是基于JVM运行的,因为看很多论文中的实现部分都是通过Scala实现的,所以大致根据官网的文档和自己查的一些资料,总结一下Scala和Java相同和一些不同之处。

一、类和主函数

  • 声明方式

    • Java中class 类名 public static void main(String[] args)
    • Scala中object 名 def main(args:Array[String])
  • Scala中所有都是对象,比如数字也是对象1.*(3)这样通过方法的形式调用,不像Java中还有八种基本数据类型不是类结构

  • object Timer {
         
      def oncePerSecond(callback: () => Unit) {
         //unit相当于void
        while (true) {
          callback(); Thread sleep 1000 }
      }
      def timeFlies() {
         
        println("time flies like an arrow...")
      }
      def main(args: Array[String]) {
         
        oncePerSecond(timeFlies)
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

二、Scala的一些特点

面向表达式的

函数式的一种编程风格,也就是返回值,但是不改变中间过程

Java的指令式编程的一种改变,通俗来说就是“去变量”

//指令式写法
def printArgs ( args: Array[String]) : Unit ={
   
    var i = 0
    while (i < args.length) {
   
      println (args(i))
      i += 1
    }
}
//函数式写法
def printArgs ( args: Array[String]) : Unit ={
   
    for( arg <- args)
      println(arg)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 不变量和变量:

    val nochange = 1;//只能赋值一次
    var changable = 2;
    
    • 1
    • 2
  • 函数定义:

    def function_name(arg1: Int): Int = arg1 + 1//返回值最后写,注意一般是等式的写法
    function_name(1,2)//调用时
    (x: Int) => x + 1//声明匿名函数
    
    val f = (x: Int) => x + 1//函数也能作为一个对象,当成量进行赋值
    f(1)//调用方式
    
    def add(m: Int,n: Int) = m + n
    val add2 = add(2,_: Int)
    add2(3)//输出为5,_表示通配符
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 柯里化函数:

    def add(m: Int,n: Int) = m + n
    def add(m: Int)(n: Int) = m + n//上面函数的 柯里化
    
    def add(m: Int)=(n: Int) => m + n//就是转换成返回一个匿名函数的函数
    /**
    实际调用时
    */
    val result = add(1)_//注意通配符,这时 result = (n: int) => 1 + n
    val sum = result(2)//输出3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

三、常见的语法点

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/972374
推荐阅读
相关标签
  

闽ICP备14008679号