scala-idea环境搭建及使用

news/2024/4/28 18:21:06/文章来源:https://blog.csdn.net/weixin_64261178/article/details/137098802

环境搭建

创建一个新项目,选择maven工程

点击next,写入项目名,然后finish

注意:默认下,maven不支持scala的开发,需要引入scala框架,右键项目点击-》add framework

pport....,在下图选择Scala

注意:如果是第一次引入框架,use libary看不到,需要配置,配置就是选择你的scala 安装目录,然后工具就会自动识别,就会显示use libary。

创建项目的源文件目录

步骤:右键main目录创建一个diretory,写个名字比如scala,右键scala目录,mark diretory,选择source root即可

在scala包下,创建包com.某某某.scala-1包名,并创建Object

编写输出Hello scala案例

scala程序基本架构

class scala_one {

  定义变量:

  val/var 变量名:变量类型 = 变量值

  val a: Int = 1

  定义方法:

  def 函数名(参数名:参数类型):返回值类型={方法体}

  def hello(arg: String): Unit = {

    println(arg)

  }

}


object scala_one {

  Scala程序的入口

  def main(args: Array[String]): Unit = {

    println("hello,scala") }

  完全面向对象:scala完全面向对象,故scala去掉了java中非面向对象的元素,如static关键字,void类型

  1.static

  scala无static关键字,由object实现类似静态方法的功能(类名.方法名),object关键字和class的关键字定义方式相同,但作用不同。class关键字和java中的class关键字作用相同,用来定义一个类;object的作用是声明一个单例对象,object后的“类名”可以理解为该单例对象的变量名。

  2.void

  对于无返回值的函数,scala定义其返回值类型为Unit类

}

Scala程序反编译

object在底层会生成两个类 scala_one, scala_one$

scala_one中有个main函数,调用 scala_one$ 类的一个静态对象 MODULES$

scala_one$.MODULE$. 对象时静态的,通过该对象调用Hello$的main函数

可以理解我们在main中写的代码在放在scala_one$的main,在底层执行Scala编译器做了一个包装

下面我们说明一下Scala程序的执行流程:

scala_one源码

objscala_one {

def main(args: Array[String]): Unit = {

  //4. 可以理解我们在main中写的代码在放在Hello$的main,在底层执行scala编译器做了一个包装

 println("hello,scala") }}

scala_one.class类

//1. object在底层会生成两个类 Hello , Hello$

//2. Hello中有个main函数,调用 Hello$ 类的一个静态对象 MODULES$

public final class scala_one{

    public static void main(String[] paramArrayOfString) {

    scala_one$.MODULE$.main(paramArrayOfString); }}

scala_one$.class

public final class scala_one${

    public static final  MODULE$;

static { new ();  }

public void main(String[] args) {

  //3. scala_one$.MODULE$. 对象是静态的,通过该对象调用scala_one$的main函数

       Predef..MODULE$.println("hello,scala");}

    private scala_one$(){

       MODULE$ = this;}}

解释:

scala中如果使用object关键字声明类,在编译时,会同时产生两个类:当前类和当前类$。

使用当前类$的目的在于模拟静态语法,可以通过类名直接访问方法。

scala将当前类$这个对象称之为伴生对象,伴随着类所产生的对象,这个对象中的方法可以直接使用。

开发注意事项:

Scala源文件以“.scala" 为扩展名。

Scala程序的执行入口是object main()函数。

Scala语言严格区分大小写。

Scala方法由一条条语句构成,每个语句后不需要分号,

Scala语言会在每行后自动加分号)。(至简原则)

如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号。

官方编程指南

        查看scala-docs-2.11.8文档,可以获得Scala的API操作

        

变量和数据类型

用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性。

注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。

1)基本语法

(1)单行注释://

(2)多行注释:/* */

(3)文档注释:/**

*

    */

代码规范

使用一次tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左移。

或者使用ctrl + alt + L来进行格式化。

运算符两边习惯性各加一个空格。比如:2 + 4 * 5。

一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅。

标识符的命名规范

Scala对各种变量方法函数等命名时使用的字符序列称为标识符。即:凡是自己可以起名字的地方都叫标识符。

命名规则

Scala中的标识符声明,基本和Java是一致的,但是细节上会有所变化,有以下四种规则:

以字母或者下划线开头,后接字母、数字、下划线

以操作符开头,且只包含操作符(+ - * / # !等)

第一种和第二种拼接,第一种在前,二者以下划线分隔

用反引号`....`包括的任意字符串,即使是关键字(39个)也可以

scala关键字(39个)

  • package, import, class, object, trait, extends, with, type, for
  • private, protected, abstract, sealed, final, implicit, lazy, override
  • try, catch, finally, throw
  • if, else, match, case, do, while, for, return, yield
  • def, val, var
  • this, super
  • new
  • true, false, null

变量

        基本语法

var | val 变量名 [: 变量类型] = 变量值

说明:在Scala中声明一个变量时,可以不指定类型,编译器根据值确定

        案例实操

声明变量时,类型可以省略(编译器自动推导,即类型推导)

      类型确定后,就不能修改,说明Scala是强数据类型语言。

变量声明时,需要初始值。

在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改

val修饰的变量在编译后,等同于加上final通过反编译看下底层代码

通过反编译软件,得到对应的底层的.class是

public final class TestVar${

    public static final MODULE$;

    private int num1;

    private final int num2;

var修饰的对象引用可以改变,val修饰的则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)

字符串输出

基本语法

字符串,通过+号连接。

printf用法:字符串,通过%传值。

字符串,通过$引用。

案列实操

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1027447.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java+SpringBoot+Vue的书籍学习平台设计与实现

基于javaSpringBootVue的书籍学习平台设计与实现 开发语言: Java 数据库: MySQL技术: SpringBoot MyBatis工具: IDEA/Eclipse、Navicat、Maven 系统展示 前台展示 后台展示 系统简介 整体功能包含: 书籍学习平台是一个基于Internet的在线学习资源平台&#xf…

Apache Hive的基本使用语法(二)

Hive SQL操作 7、修改表 表重命名 alter table score4 rename to score5;修改表属性值 # 修改内外表属性 ALTER TABLE table_name SET TBLPROPERTIES("EXTERNAL""TRUE"); # 修改表注释 ALTER TABLE table_name SET TBLPROPERTIES (comment new_commen…

音视频开发Day01

备注 ffmpeg 库相关函数记忆 FFmpeg 库简介 FFmpeg一共包含8个库: avcodec:编解码(最重要的库) avformat:封装格式处理。 avfilter:滤镜特效处理 avdevice:各种设备的输入输出。 avutil:工具库(大部分库都需要这个库的支持)。 postproc:后加工。 swresample:音频采样数据格式…

一分钟开服 《幻兽帕鲁》游戏专属服务器by京东云主机

使用京东云服务器搭建幻兽帕鲁Palworld游戏联机服务器教程,非常简单,京东云推出幻兽帕鲁镜像系统,镜像直接选择幻兽帕鲁镜像即可一键自动部署,不需要手动操作,真正的新手0基础部署幻兽帕鲁,阿腾云atengyun.…

OSCP靶场--pyLoader

OSCP靶场–pyLoader 考点(信息收集CVE-2023-0297) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV 192.168.178.26 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-28 09:14 EDT Nmap scan report for 192.168.178.26 Host is up…

基于Python的电商特产数据可视化分析与推荐系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 利用网络爬虫技术从某东采集某城市的特产价格、销量、评论等数据,经过数据清洗后存入数据库,并实现特产销售、市场占有率、价格区间等多维度的可视化统计分析,并…

关于使用vscode搭建c/c++编程环境

目录 关于使用vscode搭建c/c编程环境一、前言二、安装 IDE 二、安装TDM-GCC安装三、安装C/C环境四、编写代码并进行编译 关于使用vscode搭建c/c编程环境 一、前言 一直觉得vscode是生产强有力的生产工具,基于此,做一篇学习笔记进行记录。 二、安装 ID…

Prometheus +Grafana +node_exporter可视化监控Linux虚机

1、介绍 待补充 2、架构图 待补充 Prometheus :主要是负责存储、抓取、聚合、查询方面。 node_exporter :主要是负责采集物理机、中间件的信息。 3、搭建过程 配置要求:1台主服务器 n台从服务器 (被监控的linux虚机&am…

WPF自定义Panel:让拖拽变得更简单

在 WPF 应用程序中,拖放操作是实现用户交互的重要组成部分。通过拖放操作,用户可以轻松地将数据从一个位置移动到另一个位置,或者将控件从一个容器移动到另一个容器。然而,WPF 中默认的拖放操作可能并不是那么好用。为了解决这个问…

uniApp使用XR-Frame创建3D场景(7)加入点击交互

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用 这篇我们讲解如何与场景中的模型交互&#xff08;点击识别&#xff09; 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"><xr-node><xr-mesh id"…

【已修复】iPhone13 Pro 长焦相机水印(黑斑)修复 洗水印

iPhone13 Pro 长焦相机水印&#xff08;黑斑&#xff09;修复 洗水印 问题描述 iPhone13 Pro 后摄3倍相机有黑色斑点&#xff08;水印&#xff09;&#xff0c;如图所示&#xff0c; 后摄相机布局如图所示&#xff0c; 修复过程 拆机过程有风险&#xff0c;没有把握最好不要…

MySQL学习笔记------函数

目录 函数 字符串函数 数值函数 函数 指一段可以直接被另一段程序调用的程序或代码 字符串函数 MySQL中内置了很多字符串函数&#xff0c;常用如下&#xff1a;select 函数 concat(s1,s2,s3,...,sn) 字符串拼接&#xff0c;将s1,s2,...,sn拼接成一个字符串 #字符串拼…

C/C++语言学习路线: 嵌入式开发、底层软件、操作系统方向(持续更新)

初级&#xff1a;用好手上的锤子 1 【感性】认识 C 系编程语言开发调试过程 1.1 视频教程点到为止 1.2 炫技视频看看就行 1.3 编程游戏不玩也罢 有些游戏的主题任务就是编程&#xff0c;游戏和实际应用环境有一定差异&#xff08;工具、操作流程&#xff09;&#xff0c;在…

火车头通过关键词采集文章的原理

随着互联网信息的爆炸式增长&#xff0c;网站管理员和内容创作者需要不断更新和发布新的文章&#xff0c;以吸引更多的用户和提升网站的排名。而火车头作为一款智能文章采集工具&#xff0c;在这一过程中发挥着重要作用。本文将探讨火车头如何通过关键词采集文章&#xff0c;以…

康耐视visionpro-CogCaliperTool工具详细说明

CogCaliperTool功能说明: 卡尺工具,用于测量距离 CogCaliperTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogCaliperTool ②.添加输入图像,右键“链接到”或以连线拖拽的方式选择相应输入源 ③.拖动屏幕上的矩形框到需要测量的位置。卡尺的搜索框角度与边缘不平…

React系列之合成事件与事件处理机制

文章目录 React事件处理机制原生事件的事件机制事件代理&#xff08;事件委托&#xff09; 合成事件使用合成事件目的合成事件原生事件区别事件池 原生事件和React事件的执行顺序e.stopPropagation() React17事件机制的修改 React事件处理机制 react 事件机制基本理解&#xf…

有效的数独-java

题目描述: 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#…

什么是RISC-V?开源 ISA 如何重塑未来的处理器设计

RISC-V代表了处理器架构的范式转变&#xff0c;特点是其开源模型简化了设计理念并促进了全球community-driven的开发。RISC-V导致了处理器技术发展前进方式的重大转变&#xff0c;提供了一个不受传统复杂性阻碍的全新视角。 RISC-V起源于加州大学伯克利分校的学术起点&#xff…

RabbitMQ 实验消费原始队列消息, 拒绝(reject)投递死信交换机过程

如果你想通过 RabbitMQ 的死信队列功能实现消费者拒绝消息投递到死信交换机的行为&#xff0c;你可以按照以下步骤操作&#xff1a; 创建原始队列&#xff0c;并将其绑定到一个交换机上&#xff1a; export RABBITMQ_SERVER127.0.0.1 export RABBITMQ_PORT5672 export RAB…

uniApp使用XR-Frame创建3D场景(6)播放模型动画

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用 这篇我们讲解播放模型动画 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"> <xr-node visible"{{sec6}}"><xr-light type"ambient&qu…