类和对象

1 类定义:

class ChecksumAccumulator {
// class definition goes here
}
你就能创建 ChecksumAccumulator 对象:
new CheckSumAccumulator

 

注:1scala类中成员默认是public类型,若设为私有属性则必须加private关键字。在scala中是public属性的地方可以省略public关键字。

    2 Scala里方法参数的一个重要特征是他们都是val,不是var,

eg:

def add(b: Byte): Unit = {

b += // 编译不过,因为 b  val

sum += b

}

    3 def默认返回时Unit,若爸“Unit=”去掉,则def默认返回的值会转换成Unit,若要指定返回类型,这需要将Unit指定为要转换的类型:

Unit 是函数f 声明的结果类型。 Scala 编译器会把一个以过程风格定义的方法,就是说,带有大括号但没有等号的,在本质上当作是显式定义结果类型为Unit 的方法。例如:

scala> def g() { "this String gets lost too" }
g: () Unit

因此,如果你本想返回一个非Unit 的值,却忘记了等号时,那么困惑就出现了。所以为了得到你想要的结果,你需要插入等号:

scala> def h() = { "this String gets returned!" }

h: () java.lang.String

scala> h

res0: java.lang.String = this String gets returned!

2 Singleton对象

Scala比java更为面向对象的特点之一是Scala不能了定义静态成员,而是代之定义单例对象。

单例对象:Object 代替class关键字:

 

当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。类和它的伴生对象可以互相访问其私有成员。

 

类和单例对象间的一个差别是,单例对象不带参数,而类可以。因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。

不与伴生类共享名称的单例对象被称为独立对象
3 Scala 程序

特别要指出的是,单例对象会在第一次被访问的时候初始化。不与伴生类共享名称的单例对象被称为孤立对象: standalone object

要执行 Scala 程序,你一定要提供一个有main 方法(仅带一个参数,Array[String] ,且结果类型为Unit)的孤立单例对象名。任何拥有合适签名的 main 方法的单例对象都可以用来作为程序的入口点。代码:

编译scala源程序:

scalac  xxx.scala

 

这将编译你的源文件,不过在编译完成之前或许会有一个可感知的停顿。原因是每次编译器启动时,都要花一些时间扫描jar 文件内容,并在即使你提交的是新的源文件也在查之前完成其他初始化工作。因此,Scala 的发布包里还包括了一个叫做fsc(快速Scala编译器)的Scala 编译器后台服务:daemon。你可以这样使用:

fsc xxx.scala 快速编译

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

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

相关文章

NLP论文阅读记录 - | 使用 BRIO 训练范式进行抽象文本摘要

文章目录 前言0、论文摘要一、Introduction二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果标准抽象模型微调抽象模型微调抽象模型和 BRIO微调抽象模型和 BRIO-Loop 五 总结结论局限 前言 Abstractive Text Summarization Using th…

OpenCV | 告别人工目检:深度学习技术引领工业品缺陷检测新时代

文章目录 机器视觉缺陷检测工业上常见缺陷检测方法内容简介作者简介目录读者对象如何阅读本书获取方式 机器视觉 机器视觉是使用各种工业相机,结合传感器跟电气信号实现替代传统人工,完成对象识别、计数、测量、缺陷检测、引导定位与抓取等任务。其中工…

【项目问题解决】% sql注入问题

目录 【项目问题解决】% sql注入问题 1.问题描述2.问题原因3.解决思路4.解决方案1.前端限制传入特殊字符2.后端拦截特殊字符-正则表达式3.后端拦截特殊字符-拦截器 5.总结6.参考 文章所属专区 项目问题解决 1.问题描述 在处理接口入参的一些sql注入问题,虽然通过M…

flutter开发windows应用的库

一、window_manager 这个插件允许 Flutter 桌面应用调整窗口的大小和位置 地址:https://github.com/leanflutter/window_manager二、win32 一个包,它使用FFI包装了一些最常见的Win32 API调用,使Dart代码可以访问这些调用,而不需…

node.js mongoose index(索引)

目录 简介 索引类型 单索引 复合索引 文本索引 简介 在 Mongoose 中,索引(Index)是一种用于提高查询性能的数据结构,它可以加速对数据库中文档的检索操作 索引类型 单索引、复合索引、文本索引、多键索引、哈希索引、地理…

useConsole的封装,vue,react,htmlscript标签,通用

之前用了接近hack的方式实现了console的封装,目标是获取console.log函数的执行(调用栈所在位置)所在的代码行数。 例如以下代码,执行window.mylog(1)时候,console.log实际是在匿名的箭头函数()>{//这里执行的} con…

使用HTTP协议有哪些风险?HTTP与HTTPS的区别是什么

作为两种常见的网络协议,HTTP和HTTPS都是用于在浏览器和服务器之间传输数据的。然而在保障数据安全性方面,HTTPS远远优于HTTP。在网络安全愈发重要的当下,HTTP协议的不安全性使得其逐渐被淘汰弃用。那么使用HTTP协议有哪些风险呢?…

Backend - Django 项目创建 运行

目录 一、配置环境 二、创建 Django 项目 (一)新建文件夹 (二)打开文件夹 (三)打开运行终端 (四)创建基础项目 (五)创建app 1. 安装Django &#xf…

ASP.NET Core MVC依赖注入理解(极简个人版)

依赖注入 文献来源:《Pro ASP.NET Core MVC》 Adam Freeman 第18章 依赖注入 1 依赖注入原理 所有可能变化的地方都用接口在使用接口的地方用什么实体类通过在ConfigureService中注册解决注册的实体类需要指定在何种生命周期中有效 TransientScopedSingleton 2…

磁盘类型选择对阿里云RDS MySQL的性能影响

测试说明 这是一个云数据库性能测试系列,旨在通过简单标准的性能测试,帮助开发者、企业了解云数据库的性能,以选择适合的规格与类型。这个系列还包括: * 云数据库(RDS MySQL)性能深度测评与对比 * 阿里云RDS标准版(x86) vs 经济…

远舢智能入选国家智慧能源产业联盟理事单位 远舢OS擘画绿色能源新蓝图

近日,中关村智慧能源产业联盟2023年会员大会暨数字技术赋能能源转型论坛在京召开。大会审议通过了北京远舢智能科技有限公司(以下简称“远舢智能”)成为联盟新任理事单位,将与国务院发展研究中心、国家电投、清华大学等国家重点单…

Springboot数据加密篇

一、密码加密 1.1Hash算法(MD5/SHA-512等) 哈希算法,又称摘要算法(Digest),是一种将任意长度的输入通过散列函数变换成固定长度的输出的单向密码体制。这种映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制…

【爬虫软件】孔夫子二手书采集

项目演示 孔网爬取图书信息 目录结构 [ |-- api-ms-win-core-synch-l1-2-0.dll, |-- api-ms-win-core-sysinfo-l1-1-0.dll, |-- api-ms-win-core-timezone-l1-1-0.dll, |-- api-ms-win-core-util-l1-1-0.dll, |-- api-ms-win-crt-conio-l1-1-0.dll, |-- api…

初级数据结构(七)——二叉树

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;六&#xff09;——堆 | NULL 下一篇-> 1、写在前面 二叉树的基本概念在《初级数据结构&#xff08;五&#xff09;——树和二叉树的概念》中已经介绍得足够详细了。上一…

java开发需要掌握的TypeScript相关的知识点,细致简洁版。

Typescript&#xff1a; 介绍&#xff1a; TypeScript&#xff08;简称 TS&#xff09;是JavaScript的超集&#xff08;继承了JS全部语法&#xff09;&#xff0c;TypeScript Type JavaScript。 简单说&#xff0c;就是在JS的基础上&#xff0c;为JS添加了类型支持。是微软开…

分享一套国内功能齐全的开源MES/免费MES/MES源代码

一、系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES、好看的数字大屏。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理&#xff0c;车间基础数据管理&#xff0c;计划管理…

大模型之二十一-小语言模型塞道开启

当前提到大语言模型&#xff0c;大家想到的都是动辄百亿规模以上参数量的模型&#xff0c;13B、70B都是稀疏平常入门级的&#xff0c;但是目前从模型层面来看&#xff0c;模型参数量的规模两极分化已经来临&#xff0c;早期各大公司为了效果怼上去&#xff0c;采取了简单粗暴的…

Jmeter 性能测试 —— 评估一个系统TPS与并发数!

问题&#xff1a;性能压测&#xff0c;如何评估一个系统的TPS和并发数&#xff1f; 1、对于新系统 由业务部门或开发人员预估交易量和TPS指标 可以参考公式&#xff1a;并发用户 在线用户数 * 10%。 当一个系统还没有上线时&#xff0c;我们可以预判的是这个系统准备要给多…

【数字图像处理】实验一 图像基本运算

图像基本运算 一、实验内容&#xff1a; 1&#xff0e; 熟悉和掌握利用Matlab工具进行数字图像的读、写、显示等数字图像处理基本步骤。 2&#xff0e; 熟练掌握各种图像点运算的基本原理及方法。 3&#xff0e; 能够从深刻理解点运算&#xff0c;并能够思考拓展到一定的应用领…

MatGPT - 访问 OpenAI™ ChatGPT API 的 MATLAB® 应用程序

系列文章目录 前言 MatGPT 是一款 MATLAB 应用程序&#xff0c;可让您轻松访问 OpenAI 的 ChatGPT API。使用该应用程序&#xff0c;您可以加载特定用例的提示列表&#xff0c;并轻松参与对话。如果您是 ChatGPT 和提示工程方面的新手&#xff0c;MatGPT 不失为一个学习的好方…