Neal's Space
  • Introduction
  • Algorithm
    • 数学基础
    • Normal
      • 一致性哈希分布
      • A star 寻路
      • 蓄水池抽样 Reservoir Sampling
    • Machine Learning
      • k-近邻算法
      • k-平均演算法
      • kd-Tree算法
      • TF-IDF 特征加权
      • 机器学习模型评价
      • 数据的归一化和标准化
      • 线性回归 - "模型之母"
      • 逻辑回归 - "出场率最高算法"
      • 决策树
  • Programming Language
    • Java
      • Lombok
      • 多数据源分页查询拼接订单
      • 集群 分布式 微服务
      • 反射
      • JAVA类加载器
      • JVM内存
      • Garbage Collection(JVM的垃圾回收机制)
      • Synchronized
      • Java跨域访问
    • Scala
      • Scala使用
  • MySQL
    • MySQL事务
    • MySQL插入多条数据时遇到的问题
    • MySQL经典50题
  • Linux
    • Linux
      • Vim
      • Ubuntu换源
      • Linux内存
    • Docker
      • Docker
      • Docker容器
      • Docker镜像
      • Docker创建本地镜像
  • Data
    • DataWarehouse
      • Sqoop
      • 多维计算
    • Hadoop
      • Hadoop
        • Docker运行Hadoop
      • Hdfs
        • HDFS块丢失过多导致进入安全模式
        • NameNode内存解析
        • HDFS的Router-Based Federation
    • Hive
      • Hive安装配置
      • Hive使用DDL
      • Hive引擎Tez
      • Sqoop与Hive出现的问题
      • Hive与Hook
    • Flume
    • Hbase
      • Hbase安装配置
      • Hbase的Bloom Filters
    • Spark
      • Spark基础
      • Spark SQL
      • Spark Streaming
      • Spark On Yarn
      • Tuning Spark 数据序列化和内存调整
      • Tuning Spark Job
    • Kafka
      • Kafka文件存储
      • 偏移量提交 与 分区再平衡
    • Flink
      • Flink遇到的坑
Powered by GitBook
On this page
  • 来源
  • 特性
  • 函数式编程
  • 特点

Was this helpful?

  1. Programming Language

Scala

来源

取名来源于Scalable Language,是一门多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。

Scala运行于Java平台(Java虚拟机 JVM),并兼容现有的Java程序。

Scala的编译模型(独立编译,动态类加载)与Java一样,所以Scala代码可以调用Java类库。

特性

  • 支持的编程范式

    • 面向对象特性

      1. 每个值都是对象,包括基本数据类型,连函数也是对象

      2. 类可以被子例化,而且Scala还提供了基于mixin的组合(mixin-based composition)

    • 函数式编程

      1. 函数当成值来用

      2. 匿名函数

      3. 高阶函数

      4. 嵌套多层函数

      5. 柯里化

  • 静态类型,类型系统通过编译时检查,保证代码的安全性和一致性

    • 泛型类别

    • 协变和逆变

    • 标注

    • 类型参数的上下限约束

    • 把类别和抽象类型作为对象成员

    • 复合类型

    • 引用自己时显式指定类型

    • 视图

    • 多态方法

  • 扩展性

    1. 任何方法可用作前缀或后缀操作符

    2. 可以根据预期类型自动构造闭包

  • 并发性

函数式编程

函数式编程(英语:functional programming)是一种编程范式,它将电脑运算视为函数运算,并且避免使用程序状态以及易变对象。其中,λ演算(lambda calculus)为该语言最重要的基础。而且,λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。

比起指令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。

特点

  • 以表达式为中心

  • 无副作用

    • 只用纯函数来构造程序,

    • 一个函数在执行过程中除了根据输入参数给出运算结果外,不做其他任何影响(输出,读写,抛出异常,修改变量等),就称为没有副作用的。

  • 不修改状态

  • 引用透明

优点:

  • 代码简洁,开发速度快

  • 接近自然语言,易理解

  • 易于代码管理

  • 适合并发编程

  • 适用于热升级

函数也是一个值,允许把函数本身作为参数传入另一个函数,还允许返回一个函数。

PreviousJava跨域访问NextScala使用

Last updated 5 years ago

Was this helpful?