zoukankan      html  css  js  c++  java
  • scala之旅-核心语言特性【简介】(一)

    介绍

    欢迎来到scala之旅

    本次介绍之旅通过一些简短的说明来介绍scala中最常用的一些特性。本次介绍之旅更适用于刚接触这门语言的新手。

    这是一个简短的介绍,并不能很全面地介绍覆盖这门语言。如果你想更加深入地理解这门语言的细节,可以尝试去阅读书籍或者参考其他资源

    什么是scala?

    Scala是一种现代的多范式编程语言,旨在以简洁,优雅和类型安全的方式表达常见的编程模式。它无缝集成了面向对象和功能语言的功能。

    Scala是一门面向对象语言

    scala是一门纯粹的面向对象语言,在scala中,任何值都是一个对象。【注:区别于java,java中的基本数据类型如int是不继承于Object类的,如果需要将int当成对象,需要装箱为Integer】 对象的类型和行为被称之为类和特性。 类可以被子类继承扩展,也可以使用灵活的基于mixin的组合模式来代替繁重的多重继承

    Scala是一门面向函数语言

    scala 同时也是一门面向函数语言,在scala中,任何函数都可以当成一个值。Scala提供了用于定义匿名函数的轻量级语法,同时支持高级函数,支持函数嵌套,支持固化操作。许多面向函数的语言都提供代数数据类型,scala则通过case class和内置支持的模式匹配来实现这种功能。

    【注:scala中的代数类型包括Some,Optional,tuple。代数类型一般有两大类:1.由多种数据类型的组合,如tuple元组,例如 val a = (10,"hello")。它对应的模式匹配类型为(Int,String)。由两种数据类型组合起来的,而不是简单Object数组 2.计算得出来的,如Optional[Boolean],那么它对应的模式匹配可能是Boolean,也可能是None】

    单例对象提供了一种方便的方法来对不是类成员的函数进行分组。

    //todo 此外,scala的模式匹配概念借助于正则模式匹配已经实现到处理xml数据的扩展 来。

    Scala是静态类型的语言

    scala的数据类型是在编译时就会被强制确定下来,抽象和泛型也会在编译时一种安全、一致的方式被使用。【注:jvm中是不能保存泛型的】尤其是类型系统支持如下类型:

    • 泛型
    • 注解
    • 泛型的上界、下界
    • 内部类和抽象的成员变量
    • 复合的数据类型
    • 显式地自引用
    • 隐式地参数和转换
    • 多态方法

    类型推断意味着用户不需要用多余的信息去注释代码。将这些特性组合起来,可以为安全地复用抽象编程和软件的类型安全扩展提供一个强大的基础保障。

    Scala是可扩展的

    在实践中,特定域的应用经常需要需要对特定域的语言进行扩展。scala提供了一套独特的语言组合机制,用来以一种直接的库的方式进行增加语言的结构。

    在很多场景下,无需使用包括宏的元指令编程就可以完成这些操作,例如:

    • 隐式类 可以对现有类型进行方法扩展
    • 字符串插值器 是一种用户自定义的插值器扩展

    Scala互操作

    Scala旨在与流行的Java Runtime Environment(JRE)良好地互操作。特别是,与主流的面向对象的Java编程语言的交互是尽可能无缝的。SAM,lambda注解泛型等Java新功能在Scala中具有直接类似物。

    那些没有Java类似物的Scala功能(例如默认参数命名参数)在合理的范围内尽可能接近Java。Scala具有与Java相同的编译模型(单独的编译,动态的类加载),并允许访问成千上万的现有高质量库。

    祝您旅途愉快

  • 相关阅读:
    CSS3实现平行四边形
    [Python]图的遍历-DFS
    [Python]图的遍历-BFS
    [Python]图的遍历-拓扑排序
    [Python]哈夫曼编码
    [Python]贪心算法-Prim-和-Kruskal实现-最小生成树
    [Python]贪心算法-Dijkstra-实现
    [python3]稳定匹配算法实现和优化
    从csv文件构建Tensorflow的数据集
    Tensorflow 基础API
  • 原文地址:https://www.cnblogs.com/zhouwenyang/p/13819247.html
Copyright © 2011-2022 走看看