Scala-基础语法

Scala的基础语法(超详细版) Scala的基础语法,每种编程语言都有一套自己的语法规范,Scala语言也不例外,同样也需要遵循一定的语法规范,本博客将针对Scala的基本语法进行介绍。 阅读详情

1.Scala解释器的使用

1,REPL:Read(取值)-> Evaluation(求值) -> Print(打印) -> Loop(循环)。Scala解释器也被称为REPL,会快速编译Scala代码为字节码,然后交给JVM来执行。

2.计算表达式:在scala>命令行内,键入scala代码,解释器会直接返回结果给你。如果你没有指定变量来存放这个值,那么值会默认的名称为res,而且会显示结果的数据类型,比如Int、Double、java.lang.String等等。

  1>例如:输入 1+1,会看到res0: Int = 2

3.内置变量: 在后面可以继续使用res变量,以及他存放的值

  1>例如:2.0 * res0, 返回res1: Double =4.0

  2>例如:“Hi, ” + res0, 返回res2: java.lang.String = Hi, 2

3.自动补全:在scala命令行内,可以使用Tab键进行自动补全。

  1>例如:输入res2.to,2敲击Tab键,解释器会显示出一下选项:tocharArray,toLowerCase,toString.toUpperCase.因为此时无法判定你需要补全的是哪一个,因此会提供给你所有的选项。

  2>例如:输入res2.toU,敲击Tab键,直接会给你补全为res2.toUpperCase

2.Scala与Java的关系

Scala与Java的关系是非常密切的!因为Scala是基于Java虚拟机,也就是JVM的一门编程语言。所以有Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行。所以Scala和Java是可以无缝互操作的。Scala可以任意调用Java的代码。所以Scala与Java的关系是非常非常密切的。

3.声明变量

1.声明val变量:可以声明val变量来存放表达式来计算。

  1>例如:val result = 1 + 1

  2>后续这些常量是可以继续使用的,例如:2 * result

  2>但是常量声明后,是无法改变他们的值,例如: result = 1,会返回 error: reassignment to val 的错误信息。

2.声明var变量:如果要声明值可以改变的引用,可以使用var变量

  1>例如: var myresult = 1, myresult = 2

  2>但是在Scala程序中,通常建议使用val, 也就是常量,因此如类似于Spark的大型复杂系统中,需要大量的网络传输数据,如果使用var,可能会担心被错误的更改。

  3>在Java的大型复杂系统的设计和开发中,也是用类似的特性,他们通常会将传递给其他模块/组件/服务的对象,设计成不可变类(immutable class)。在里面也会使用Java的常量定义,比如final,阻止变量的值被改变。从而提高系统的健壮性(robust,鲁棒性)和安全性。

3.指定类型:无论声明var变量,还是声明val变量,都可以手动指定其类型,如果不指定的话,Scala会自动根据值来进行类型推断。

  1>例如:val name: String = null

  2>例如: val name: Any = "yang"

4.声明多个变量:可以将多个变量放在一起进行声明

  1> 例如:val name1, name2: String = null

   2>例如: val num1, num2 = 100

4.数据类型与操作符

1.基本数据类型:Byte、Char、Short、Int、Long、Float、Double、Boolean

  1>这与Java的基本数据类型的包装类型相同,但是Scala没有基本数据类型和包装类型的概念,统一都是类。Scala自己会负责数据的基本类型和引用类型的转换操作。

  2>使用以上类型,直接就可以调用大量的函数。例如:1.toString(), 1.to(10)

2.类型的将强版类型:Scala使用很多将强类给数据类型增加了上百种增强的功能和函数。

  1>例如:String类型通过StringOps类增强了大量的函数,“Hello”。intersect("World").

  2>例如:Scala还提供RichInt、RichDouble、RichChar等类型,RichInt就是提供了to函数,1.to(10),此外Int为隐式转换为RichInt,让后再调用其to函数

3,基本操作符:Scala的算术操作符与Java的算法操作符也没什么区别,比如+、-、*、/、%等,以及&、|、……、>>、<<等

  1>但是,在Scala中,这些操作符其实是数据类型的函数,比如1 + 1,可以写成1 + (1)

  2>例如:1.to(10), 又可以写成1 to 10

  3> scala 中没有提供++、--操作符,只能使用+=和-=,比如counter = 1, counter++是错误的,必须写成counter += 1

5.函数调用与apply()函数

1.函数调用的方式:在Scala中,函数调用是非常简单的

  1>比如:import scala.math_, sqrt(2), pow(2), min(3,pi)

  2>不同的一点是,如果调用函数时,补血药传递参数,则Scala允许调用函数时省略括号的。例如:“Hello World”.distinct

2.apply函数

  1> scala中的apply函数时非常特殊的 一种函数,在Scala的object中,可以声明apply函数。而使用“类名()”的形式,其实就是“类名.apply()”的一种缩写。通常使用这种方式来构造类的对象,而不是使用“new 类名()”的方式。

  2>例如:“Hello World”(6),因为在StringOps类中的def apply(n: Int): Char 的函数定义,所以“Hello World”(6),实际上是“Hello World”.apply(6)的缩写。。

  3>例如:Array(1,,2,3,4),实际上是用Array object的apply()函数来创建Array类的实例,也就是一个数组。



解锁RK3588多屏异显:MIPI+HDMI+EDP混合输出全攻略 本文详细介绍了RK3588处理器在MIPI+HDMI+EDP混合输出配置中的技术实现与应用。作为一款高性能处理器,RK3588凭借其强大的图形处理能力,支持多屏异显功能,可满足智能安防、工业控制等领域的多屏显示需求。文章从硬件连接、设备树配置、内核驱动设置到显示参数调整,系统阐述了配置流程,并针对信号不稳定、显示模式不匹配等常见问题提供了解决方案。通过智能安防监控案例,展示了该技术在提高监控效率方面的实际应用价值。随着技术进步,RK3588多屏异显技术将在更多领域发挥重要作用,为开发者提供灵活多样的显示方案 阅读详情

相关推荐

OrthoFinder功能、流程和文件注释

OrthoFinder 的标准输出包括:直系同源组,直系同源基因,有根基因树,解析基因树,无根物种树、有根物种树,基因重复事件以及相关的统计数据。

hs6605015的博客 3046

Scala 基础语法

Scala 使用 package 关键字定义包,在Scala将代码定义到某个包中有两种方式:第一种方法和 Java 一样,在文件的头定义包名,这种方法就后续所有代码都放在该包中。比如:第二种方法有些类似 C#,如:第二种方法,可以在一个文件中定义多个包。

2401_89580743的博客 1166

DETR系列文章之–Co-DETR

Co-DETR,并行训练多个辅助头,以一对多的标签分配方式进行监督从辅助头中提取正样本坐标,为解码器中的正样本的训练效率进行额外的定制化正样本query.一对一标签分配:每个GT框分配给一个特定的query(DETR),较少的正query导致低效训练,从编码器生成的潜在表示和解码器中的注意力学习分析这一问题。一对多标签分配:每个GT框分配给检测器输出的多个proposal/anchor,依赖NMS或者anchor生成(ATSS,RetinaNet,FCOS,PAA)。

weixin_43731232的博客 2110

Scala基础语法

通常一行一条命令,。。【导包】,过程中定义函数,也可以在【导包】。

qq_73339471的博客 1050

大厂嵌入式面试常考八股文及算法

1.指向已被释放或无效的内存地址的指针是野指针。互斥锁是一种用于线程同步的机制,用于确保同一时间只有一个线程访问共享资源。多态是面向对象编程中的一种特性,它允许以一种统一的方式处理不同类型的对象,通过相同的接口可以表现出不同的行为。大小端(Endian)指的是在计算机存储和处理多字节数据时,字节的存储顺序。大端序(Big Endian):高位字节存储在低地址,低位字节存储在高地址。类似于将数字的高位放在左边,低位放在右边的表示方式。例如整数值0x12345678在内存中按照大端序排列为。

谢谢大家的关注 6158

量子计算入门指南:密度算符的核心概念与应用解析

本文深入解析了量子计算中密度算符的核心概念与应用。作为描述量子系统“状态的状态”的关键数学工具,密度算符能有效处理混合态与子系统描述,是理解量子噪声、量子纠错和开放系统演化的基石。文章通过对比纯态与混合态,阐释了密度矩阵的数学定义与物理意义,并结合代码示例演示了其在实际量子计算问题中的强大威力。

day7的博客 469

scala基础语法_Scala基础知识和语法 Scala编程教程

scala基础语法After installing and knowing about Scala, it time to hop on to some basic concepts that are important in Scala. You will use them many times in your Scala development carrier. 在安装并了解了Scala之...

cumtv80668的专栏 227

【Cubietruck】Qt5.8.0 x64、x86、armhf三个版本的编译安装

一、       Preparation 以下环境配置支持虚拟机和实体机,但是实体机生产效率会相对高一点,实体机编译Qt的速度是虚拟机两倍以上。 若使用虚拟机,推荐使用VirtualBox,开源免费,尽量不要使用Vmware破解版。   Download List   名称 链接 下载项目 OS https://mirro

beatfan的博客 3658

Scala语言入门基础语法

一,基础语法 package cn.itcast.helloword.newstart import scala.collection.mutable.ArrayBuffer object basics { //def:定义方法用def关键字 m:方法的名字 x和y是参数列表 Int:方法返回值类型 x*y:方法体 //方法的返回值类型可以不写,编译器可以自动...

筑梦人的博客 7036

PTA-浙大版 《Python程序设计》 第三章编程题目及答案

博主第一次写优快云的博客,所以排版上可能有些不尽人意,代码部分均为自己的思路,可能复杂或者考虑欠妥,欢迎大家一起讨论~ 第一题:大于身高的平均值 这里用了np数组求得平均数,当然for循环累加也是可以的 import numpy as np data = input().split() data = list(map(int,data)) avg = np.mean(data) for i in data: if i > avg: print(i,end = '

Legendwqs的博客 1万+

GIS国土工具实战:从地类分析到坐标转换,一站式解决项目难题

本文详细介绍了GIS国土工具在国土整治项目中的高效应用,涵盖地类分析、坐标转换、影像加载等核心功能。通过实战案例展示如何利用该工具快速处理shp与txt文件转换、智能比对三调二调数据,以及优化影像加载策略,显著提升项目效率。特别适合需要处理复杂国土数据的专业人员使用。

weixin_28732953的博客 334

scala基础语法

scala基础语法 声明值和变量 scala使用val或者var声明变量 var/val 变量名[:变量类型]=变量值 val定义的变量,值是不可变的,是一个常量 var a=10 var b="hello" val author="upuptop" 变量类型可以省略,解析器会根据值判断,val和var声明变量时都必须初始化。尽可能的使用不可变变量 常用类型 Boolean:true或者...

趣学程序 606

同步调相机启动与并网控制技术方案

同步调相机起动与并网控制技术方案采用背靠背变流器系统,通过静止变频器(SFC)策略实现无原动机驱动的同步电机从静止到同步转速的平稳起动。方案详细阐述了硬件自检、模块初始化、转子位置检测等关键环节,重点解决启动转矩为零、冲击电流大等挑战。系统基于STM32或C2000系列控制器,包含网侧/机侧变流器、检测保护单元及通信接口,通过励磁脉冲和电压响应分析实现高精度转子初始定位,为后续并网提供必要条件。代码级实现涵盖了ADC自检、数字IO验证及通信端口测试等核心功能。

huanghm88的专栏 306

Scala 基础语法

如果您熟悉Java语言语法和编程,那么学习Scala将会很容易。Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的。 当编写Scala程序时,它可以被定义为通过调用彼此的方法进行通信的对象的集合。现在我们简单地看一下类,对象,方法和实例变量的含义。 类 - 可以将类定义为描述与该类相关的行为/状态的模板/蓝图。 对象 - 对象有状态和行为。一个对象是类的一个实例。 ...

Simple 专栏 400

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Scala 基础语法代码

package org.exinglo.scala class LearnScala { } object Test{ val variable1 = "this is my first scala variable" def func1(): String = "hello world" //不带参数的函数被调用时,可以不加括号 def func2(who

心中永远的正能量 4701

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Scala 语法基础

一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 运行在Java虚拟机上,并兼容现有的Java程序。Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。 二 安装与环境配置 Scala 语言可以运行在Window、Linux、Unix、 Mac...

dengshuabi6933的博客 1482
上一篇: Scala-安装
下一篇: office图标显示异常和新建时图标没有显示等问题解决
VectorYang
博客等级 码龄10年 17粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值