欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > Scala的初步使用

Scala的初步使用

2025/3/13 11:45:59 来源:https://blog.csdn.net/qq_51180928/article/details/146174382  浏览:    关键词:Scala的初步使用

目录

  • 1. Scala简介
  • 2. Scala编写的Hello World
    • 2.1 pom.xml中依赖和插件的配置
    • 2.2 安装Scala2.12.17
    • 2.3 安装code-server插件
    • 2.4 helloworld.scala
    • 2.5 helloworld2.scala
    • 2.6 java调用scala object
  • 3. Scala调用Java
    • 3.1 例子1
    • 3.2 例子2
  • 参考

1. Scala简介

  Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言,并集成面向对象编程和函数式编程的各种特性。
  Scala具备如下的核心特征:
  1. Scala中的每个值都是一个对象,包含基本数据类型在内,连函数也是对象。
  2. 与只支持单继承的语言相比,Scala具有更广泛意义上的类重用。Scala允许定义新类的时候重用”一个类中新增的成员定义“。
  3. Scala还包含若干函数式语言的关键概念,包括高阶函数、局部套用、嵌套函数、序列解读等。
  4. Scala是静态类型的,这就允许它提供泛型类、内部类,甚至多态方法。
  Scala可以与Java互操作,用scalac这个编译器把源文件编译成Java的class文件,可以从Scala中调用所有的Java类库,可同样可以从Java应用程序中调用Scala的代码。

2. Scala编写的Hello World

2.1 pom.xml中依赖和插件的配置

  <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.scala-lang</groupId><artifactId>scala-reflect</artifactId><version>2.12.17</version></dependency></dependencies><build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><version>1.12</version><executions><execution><id>add-scala-source</id><phase>generate-sources</phase><goals><goal>add-source</goal></goals><configuration><sources><source>src/main/scala</source></sources></configuration></execution></executions></plugin><plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>4.8.0</version><executions><execution><id>scala-compile-first</id><phase>process-resources</phase><goals><goal>compile</goal></goals></execution><execution><id>scala-test-compile</id><phase>process-test-resources</phase><goals><goal>testCompile</goal></goals></execution></executions></plugin></plugins><pluginManagement><plugins><!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-jar-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin><!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --><plugin><artifactId>maven-site-plugin</artifactId><version>3.7.1</version></plugin><plugin><artifactId>maven-project-info-reports-plugin</artifactId><version>3.0.0</version></plugin></plugins></pluginManagement></build>

2.2 安装Scala2.12.17

  命令:

cd ~
wget https://downloads.lightbend.com/scala/2.12.17/scala-2.12.17.deb
apt install ./scala-2.12.17.deb -y

2.3 安装code-server插件

  安装Scala(Metals)和Scala Syntax,等待插件自动下载Metals,即可直接在.scala文件中运行代码。
在这里插入图片描述

2.4 helloworld.scala

  object语句在定义了一个叫helloworld的类的同时还定义了一个叫helloworld的实例。这个实例在第一次使用时会进行实例化。这个类通过main函数来接受命令行参数(String数组),并且返回Unit(等价于void)。main函数没有使用static修饰符,是因为Scala从不定义静态成员,而通过定义object取而代之。

object helloworld {def main(args : Array[String]) : Unit = {println("Hello, World!")}
}

  直接点击Scala代码文件中的run即可运行。
在这里插入图片描述

2.5 helloworld2.scala

object helloworld2 {def greet() : Unit = {println("Hello, World!")}
}

2.6 java调用scala object

public class App 
{public static void main( String[] args ){helloworld2$.MODULE$.greet();}
}

  运行命令:

mvn clean install
java -cp "./target/scala-simple-usage-1.0.jar:/usr/share/scala/lib/scala-library.jar" com.mengsui.App

在这里插入图片描述

3. Scala调用Java

  Scala的另一个强项在于可以简单地与已有的Java代码交互,所有Java.lang中的类都已经被自动导入,而其他的类需要显式声明导入。

3.1 例子1

  Scala的import语句可以使用大括号来导入同一个包里的多个类。当导入一个包中的所有类或者符号时,需要使用下划线,这是由于*在Scala中是一个有效的标识符。
  在Scala中,只有一个参数的函数可以用df format now来替代df.format(now)。Scala中可以直接继承或者实现Java中的接口和类。

import java.util.{Date, Locale}
import java.text.DateFormat
import java.text.DateFormat._object FrenchDate {def main(args : Array[String]) : Unit = {val now = new Dateval df = getDateInstance(LONG, Locale.FRANCE)println(df format now)}
}

在这里插入图片描述

3.2 例子2

  Scala是一个纯面向对象的语言,数字和函数都是对象。下面的oncePerSecond接受一个回调函数作为参数,这个回调函数既不接受参数也没有任何返回。main中使用了一个匿名函数() => println("...")来作为oncePerSecond的参数,该匿名函数没有任何参数,并且用=>将参数列表和代码分开。

object Timer {def oncePerSecond(callback: () => Unit) {while (true) {callback()Thread sleep 1000}}def main(args : Array[String]) : Unit = {oncePerSecond(() => println("time files like an arrow..."))}
}

在这里插入图片描述

参考

吴章勇 杨强著 大数据Hadoop3.X分布式处理实战

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词