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

本文主要介绍Scala在Flink Java开发中的辅助作用,包括类和主函数的声明方式、Scala的特点、常见语法点,以及函数部分。Scala是一种面向表达式的函数式编程语言,强调类型推断和不变量,提供了与Java不同的编程体验,常用于Flink等大数据处理框架的实现。
摘要由CSDN通过智能技术生成

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)
      }
    }
    

二、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)
}
  • 不变量和变量:

    val nochange = 1;//只能赋值一次
    var changable = 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,_表示通配符
    
  • 柯里化函数:

    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
    

三、常见的语法点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值