📜  是什么让 Scala 可扩展?

📅  最后修改于: 2022-05-13 01:54:47.913000             🧑  作者: Mango

是什么让 Scala 可扩展?

语言的可伸缩性受一些因素的影响,从语法细节到组件抽象结构。 scala 使其可扩展的主要方面是它结合了面向对象和函数式编程。它对高阶函数、尾调用优化、不可变值、模式匹配、多态性、抽象、继承等两种编程结构都有很好的支持。Scala 还包括自己的解释器,可用于直接执行指令,无需先前的编译。另一个关键特性是并行集合库,旨在帮助开发人员解决并行编程模式。
其他一些功能如下:

  • 斯卡拉是简洁的。它为后端操作提供了更好的支持。与Java相比,Scala 程序的长度往往高达 10 倍。它避免了一次又一次地出现的代码,以获得一些给Java程序带来负担的结果。
    示例:在Java中,具有构造函数的类如下所示:
Java
class Geek
{
    // data members of the class.
    String name;
    int id;
   
    // constructor would initialized data members
    // with the values of passed arguments while
    // object of that class created.
    Geek(String name, int id)
    {
        this.name = name;
        this.id = id;
    }
}


Scala
class Geek(name: String, id: Int) {}


Java
// Function to find string which has
   // first character of each word.
   static char first(String str)
   {
       for (int i = 0; i < str.length(); i++)
           if (Character.isUpperCase(str.charAt(i)))
               return str.charAt(i);
       return 0;
   }


Scala
val first = str.exists(_.isUpperCase)


  • 在 Scala 中,它将被写成:

斯卡拉

class Geek(name: String, id: Int) {}
  • Scala 通过让我们提高我们设计的接口的抽象级别来帮助您管理复杂性。 Java将 stings 视为在循环字符字符执行的低级实体。 Scala 代码将相同的字符串视为可以查询的更高级别的字符序列。 Scala 提供了开发框架和库的工具。
    示例:在Java中,查找第一个大写字母。

Java

// Function to find string which has
   // first character of each word.
   static char first(String str)
   {
       for (int i = 0; i < str.length(); i++)
           if (Character.isUpperCase(str.charAt(i)))
               return str.charAt(i);
       return 0;
   }
  • 在 scala 中,它将被写为:

斯卡拉

val first = str.exists(_.isUpperCase)
  • 在Java代码中,字符串是低级实体,而在 Scala 中,相同的字符串被视为高级实体。在 Scala中 _.isUpperCase是一个函数字面量。
  • 它支持静态类型,其中计算形成为在编译时更改程序状态的语句。这是一种可以提高运行时效率的方法。通过它们持有和计算的值,静态类型系统对变量和表达式进行分类。一个类似于 Java 的嵌套类类型系统,它允许我们使用泛型参数化类型,使用抽象类型隐藏细节,并通过使用交集来组合类型。
  • 它在Java虚拟机(JVM)上实现,因此它可以访问所有Java方法和字段,从Java类继承并实现Java接口。它不需要任何特殊语法、显式接口描述或粘合代码。它使用 Java 的类型并将它们修饰得更好看。 Scala 编译器将程序编译成 .class 文件,其中包含 JVM 可以执行的字节码。 Scala 可以使用Java SDK 的所有类。在 Scala 的帮助下,用户可以自定义Java类。