唐山网站设计最专业的微网站开发

web/2025/9/28 14:35:17/文章来源:
唐山网站设计,最专业的微网站开发,甘井子区城市建设管理局网站,设计导航网站 左侧菜单栏类  /  对象 【《快学Scala》笔记】 一、类 1、Scala中的类是公有可见性的#xff0c;且多个类可以包含在同一个源文件中#xff1b; 1 class Counter{ 2 private var value 0  //类成员变量必须初始化#xff0c;否则报错 3 4 def increment(){ //类中的…  类  /  对象 【《快学Scala》笔记】 一、类 1、Scala中的类是公有可见性的且多个类可以包含在同一个源文件中 1 class Counter{ 2 private var value 0  //类成员变量必须初始化否则报错 3 4 def increment(){ //类中的方法默认是公有可见性 5 value 1 6 } 7 8 def current() value //对于类中的“取值方法”在定义时可省略掉括号直接 def current value 9 } Scala类的使用    Scala的类在未提供构造器时也会提供默认构造器且在调用无参构造器或无参方法时可省略掉方法后的括号。 2、Scala类的每个字段都有getter和setter方法私有字段的getter和setter默认是私有的公有字段的getter和setter方法默认是公有的。 其中对于类中的属性valueScala类默认生成的getter方法名为 value默认生成的setter方法名为 value_ 。使用时我们可以重新定义获取或设置属性的方法。 例如 1 class Clock{ 2 var hour 0 3 var minute 0 4 var second 0 5 6 def getTime():String{ 7 return hour:minute:second 8 } 9 } 对于Clock类中的属性如 hour其对应的getter方法为 hour 其对应的setter方法名为 hour_     【注可以重新定义获取Scala类中属性的方法但是最好不要与属性默认对应的getter/setter方法重名否则会报错。】 3、对于Scala类中的val属性只有默认的getter方法对于private属性其默认getter、setter都是private的。因而对于不想提供setter方法的变量可以设置为val对于不想提供getter、setter方法的变量可以设置为private。 4、注意Scala类中定义无参函数时若函数声明时省略了函数名后的括号由于无参数可以省略调用时必须参数无括号的形式通过带括号形式调用会报错。如 1 class Counter{ 2 var value 0 3 4 def current value 5 } 类Counter定义中对于方法current由于不接受参数所以定义时省略了方法名current后的括号。此时对于Counter的实例counter调用current方法时必须采用counter.current无括号形式。    5、对于Scala类中定义的字段在Scala中实际为私有字段。还有待进一步理解和验证 1 class Counter{ 2 var value 0 3 val sum 0 4 private var cnt 1 5 6 //.... 7 } 在Counter类中Scala在为Counter生成面向JVM的类时对于value字段会生成对应的私有字段value和公有的getter、setter方法对于sum字段会生成私有的final字段和公有的getter方法对于cnt字段会生成私有字段cnt和私有的getter、setter方法貌似这个private声明只是影响的Scala根据属性生成的对应getter、setter的可见性。 6、构造器   Scala的类可以有一个主构造器和多个辅助构造器。每个辅助构造器的名称为this每一个辅助构造器都必须以调用已经定义的辅助构造器或主构造器开始定义。 主构造器  如果一个类没有显示定义主构造器则有一个默认的无参主构造器。   如定义一个Student类 1 class Student(val name:String, var age:Int 0, address:String , private var school:String ){ 2 var grade:Int if( age7 ) age-7 else 0 3 4 println( Im in main constructor. ) 5 6 def info() name is name, age is age, address is address 7 }    对于Scala类主构造器的参数放置在类名后由括号括起来。且对于主构造器中var、val、private 等标注的参数都会成为类的对应字段并生成对应的默认getter、setter方法。如Student类中的name、age、school等。对于主构造器中的未用var、val标注的参数如果在类的任何一个方法用用到该参数该参数将会转换为类的字段否则不会如Student类的address属性。   由于在Student类中的info方法中用到了参数address所以Student共有name、age、address、school、grade等5个属性且Scala根据对应属性的特点生成了默认的getter和setter方法。   对于主构造器的参数也可以提供参数默认值。通过为主构造器提供默认值可减少辅助构造器的个数。    主构造器的函数体是类中除了方法定义以外的其他语句如在Student类的主构造器中包含grade属性的初始化和prinln这两行语句。   Stuent类的使用。    辅助构造器  辅助构造器通过this来定义且必须首先调用主构造器或者其他已经定义的辅助构造器。 1 class Person(val name:String){2 var age 03 var sex:Char f4 5 println(main constructor...)6 7 def this(name:String, age:Int){8 this(name) //调用主构造器9 this.age age //使用this关键字 10 11 println( auxiliary constructor1 ) 12 } 13 14 def this(name:String, age:Int, sex:Char){ 15 this(name, age) 16 17 this.sex sex 18 19 println( auxiliary constructor2 ) 20 } 21 }   【注辅助构造器的参数前不能添加val、var标志否则会报错。】    私有主构造器 1 class Person private(val name:String){ 2 var age:Int 1 3 4 def this(name: String, age:Int){ 5 this(name) 6 this.age age 7 } 8 9 }   私有构造器通过在类名后用private关键字标注主构造器参数来标明。此时可以通过辅助构造器来创建该类的对象。 7、嵌套类 1 class Family(val h_name:String, val w_name:String){2 class Husband(var name:String){3 println( Im a husband )4 }5 6 class Wife(var name:String){7 println( Im a Wife )8 }9 10 var husband new Husband(h_name) 11 var wife new Wife(w_name) 12 13 def info(){ 14 println( husband: husband.name, wife:wife.name ) 15 } 16 }   在Scala中你几乎可以在任何语法结构中嵌套任何语法结构如在函数中定义函数在类中定义类。  二、对象object 1、Scala中没有静态方法和静态字段但是可以用object语法来实现类似的功能。对象定义了某个类的单个实例。   Scala的object中可以用来实现类似的功能用来存放工具函数或常量等。如 1 object Sequence{ 2 private var next_num 0 3 val threshold 100 4 5 def getSequence() { 6 next_num 1 7 next_num 8 } 9 }   使用object中的常量或方法通过object名直接调用对象构造器在对象第一次被使用时调用如果某对象一直未被使用那么其构造器也不会被调用。   object的构造器不接受参数传递。    2、伴生对象   可以将在Java类中定义的静态常量、方法等放置到Scala的类的伴生对象中。伴生对象与类同名且必须放置在同一源文件中。类可以访问伴生对象私有特性但是必须通过 伴生对象.属性名 或 伴生对象.方法 调用。   伴生对象是类的一个特殊实例。 1 class Counter{ 2 def getTotalCounter() Counter.getCount 3 } 4 5 object Counter{ 6 private var cnt 0 7 8 private def getCount() cnt 9 }   如在类Counter访问其伴生对象的石油方法getCount必须通过 Counter.getCount() 的方式调用。 3、对象可以继承或扩展多个特质 1 abstract class Person(var name:String, var age:Int){ 2 def info():Unit 3 } 4 5 object XiaoMing extends Person(XiaoMing, 5){ 6 def info(){ 7 println( name is name, age is age) 8 } 9 }   4、apply方法 当遇到 object(参数1, 参数2,....,参数n)的形式的调用时apply方法便会被调用。 5、main方法——Scala程序的入口 main方法定义在object中形式如下 1 object HelloWorld{ 2 def main(args: Array[String]){ 3 println(Hello World!) 4 } 5 }   可以通过scalac 源文件名然后通过 scala 类名 来执行主程序。    6、还可以通过扩展特质App来运行指定代码 1 object HelloWorld2 extends App{ 2 println( A Hello world from HelloWorld2 ) 3 }     通过扩展App特质的方式执行程序时将要执行的程序放到了object的主构造器中。 7、枚举   Scala并没有定义枚举类型但是可以通过定义扩展Enumeration的对象并用Value方法初始化枚举类中的所有可选值提供枚举。 1 object TrafficeLight extends Enumeration{ 2 val Red, Yellow, Green Value 3 4 }     上述实例中的val Red, Yellow, Green Value语句相当于 1 val Red Value 2 val Yellow Value 3 val Green Value   用Value方法初始化枚举类变量时Value方法会返回内部类的新实例且该内部类也叫Value。另外在调用Value方法时也可传入ID、名称两参数。如果未指定ID默认从零开始后面参数的ID是前一参数ID值加1。如果未指定名称默认与属性字段同名。 1 object TrafficLight extends Enumeration{ 2 val Red Value(1, Stop) 3 val Yellow Value(Wait) //可以单独传名称 4 val Green Value(4) //可以单独传ID 5 }   上例中Yellow属性就仅定义了名称Green仅定义ID。    参数在不指定名称时默认参数的Value为字段名。 【注枚举类型的值是 对象名.Value 如上例中的枚举类型是 TrafficLight.Value。】 8、通过id方法获取枚举类型值的ID    9、通过values方法获取所有枚举值的集合    10、通过ID来获取对应的枚举对象      转载于:https://www.cnblogs.com/-crazysnail/p/3984010.html

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

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

相关文章

如何给网站添加搜索关键字论坛网站建设用工具软件

概述 根据硬件摩尔定律,硬件成本随时间越来越低,性能较之前越来越高,尤其是随着pcie全闪灯普及,理论上作为云服务的基础设施,存储应该越来越便宜。然而,购置商用sds产品的成本却一直居高不下,越…

忘记网站后台用户名好动词做的网站能行吗

联合体 联合体的创建 联合体的关键字是union union S {char a;int i; };除了关键字和结构体不一样之外,联合体的创建语法形式和结构体的很相似,如果不熟悉结构体的创建,可以看一下我上一篇的博客关于结构体知识的详解。 联合体的特点 联合…

单页网站源码下载水墨背景风格企业网站模板

参考链接: hooks:pre_get_sources_script 功能简介 hooks:pre_get_sources_script 是gitlab CICD中的一个功能,该功能可以指定在克隆 Git 仓库和任何子模块之前要在执行器上执行的某些命令。例如: 调整 Git 配置导出跟踪变量 下来简单给…

网站开发人员工具下载视频html在线编辑

简介 之前的文章我们讲了count排序,但是count排序有个限制,因为count数组是有限的,如果数组中的元素范围过大,使用count排序是不现实的,其时间复杂度会膨胀。 而解决大范围的元素排序的办法就是基数排序。 基数排序…

我想创建一个网站外国教程网站有哪些

JavaScript中有很多用于操作数组的内置函数。以下是一些常用的数组函数: 1. Array.prototype.push(): 向数组末尾添加一个或多个元素,并返回新数组的长度。 2. Array.prototype.pop(): 删除并返回数组的最后一个元素。 3. Array.prototype.unshift(): 向…

陕西企业网站建设哪家好如何做阿里巴巴网站

EBSE专题连载共分为“五个”篇章。此文为该连载系列的“第四”篇章,在之前的“篇章(三)”中已经结合具体研究实践阐述了“步骤二,通过系统调研确定改进方案”等内容。那么,在本篇章(四)中&#…

怎么建立企业网站平台网站建设项目进度表

个人记录 Gitee创建账号 以KS进销存系统为例,下载到本地电脑解压。 新建私有仓库 仓库名称:ks-vue3,选择‘私有’ 本地配置 下载安装git配置git 第一次配置可以在本地目录右键【Open Git Bash here】输入【Git 全局设置】再输入【创…

2015百度竞价单页面网站模板源码设计中国铁路保险网站

目录 一.ChatGPT的发展历程 二.Attention is all you need 三.对于GPT-4的智能水平评估 四.大语言模型的技术演化 1.从符号主义到连接主义 2.特征工程 2.1数据探索 2.2数据清洗 2.3数据预处理 2.3.1无量纲化 2.3.1.1标准化 2.3.1.2区间缩放法 2.3.1.3标准化与归一…

国内做优秀的农业信息网站金属材料东莞网站建设

字符串类的charAt() 方法可返回指定位置的字符。 stringObject.charAt(index)从键盘输入获取了一个字符串,将其数据类型转换为字符型。 Scanner scan new Scanner(System.in); String str scan.next(); char ca str.charAt(0);示例: import java.u…

长春网站建设公司哪个好专业建站培训

树莓派2代的Model B采用Broadcom BCM2836 900MHz的四核SoC,1GB内存,是新一代开拓者,兼容1代B。相比之下,树莓派2的性能比1代提升6倍,内存翻了一番。Raspberry Pi 2不仅能跑全系列ARM GNU/Linux发行版,而且支…

ps网站首页效果图实例创意营销策划案例

C 实现 定义以下三个类; 狼类(Wolf):成员变量姓名:stringName,成员变量爪子锋利度:intShape,成员函数:voidPrintStateO,按照姓名、爪子锋利度格式输出两个成员变量的值。←人类(Human):成员变量姓名:stringName,成员变量智力:intIntell,成员函…

高埗做网站做h5的网站页面设计

终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直到登录接口的参数…

网站微营销公司哪家好网站找谁做

Alibaba分布式事务组件Seata实战 事务 本地事务 对于操作单一数据库的场景下的事务,ACIO特性是数据库直接支持的 分布式事务 在分布式情况下,需要的操作资源分布在多个资源服务上,而应用需要保证对于多个资源服务器的数据操作要么全部成…

古德设计官网网站建设网站优化相关资讯文章

第一个罚球,戴维斯出手后,听到哐当医生,皮球掉了出来。我又紧张了。微信群了很多人开始发消息,说詹姆斯队又要输了。回到比赛。戴维斯当时没有任何微笑,我估计他内心也是紧张的,他有点埋怨哈登,…

企业网站接入微信支付千锋教育培训

码到三十五 : 个人主页 目录 一、引言二、享元设计模式的概念1. 对象状态的划分2. 共享机制 三、享元设计模式的组成四、享元设计模式的工作原理五、享元模式的使用六、享元设计模式的优点和适用场景结语 [参见]: Java设计模式:核心概述&…

咸阳做网站托管浏览器网址导航大全

文章目录 持久化配置慢查询命令及安全配置内存配置 持久化配置 慢查询 命令及安全配置 漏洞:Redis未授权访问配合SSH key文件利用分析-腾讯云开发者社区-腾讯云 (tencent.com) 漏洞出现的核心的原因有以下几点 Redis未设置密码利用了Redis的config set命令动态修…

河北建设厅网站登陆怎么找附件有什么做兼职的好的网站吗

PureFlash云原生存储 PureFlash是一个开源存储系统,它能为云计算和传统应用提供块存储服务。PureFlash最显著的优势是其高性能,每节点能提供超过100万IOPS随机写IO。 PureFlash可以以云原生的方式部署,并为云原生应用提供持久存储。 PureFl…

上海市建设质量协会网站怀化市优化办电话

前言 刚开始,以为做性能测试,就是做些脚本、参数化、关联,压起来之后,再扔出一个结果。 但实际上不止这些内容,还要加上性能分析,关注调优之后响应时间有多大的提升,TPS 有多大的提高&#xf…

建卖手机网站大连信息网

netbeans调试使用NetBeans的Java EE开发人员习惯于直接在NetBeans所选择的应用程序服务器中运行和调试其瘦战应用程序。 在开发打包为ber或镂空jars的微服务时,您期望使用相同的轻松方式进行运行和调试。 好消息是您可以。 在本文中,我将逐步介绍如何在N…

凡科可以做淘客网站吗网站关键词词库怎么做

背景 随着智能门禁等物联网产品的普及,越来越多的开发者对音视频互动体验提出了更高的要求。目前市面上大多一对一互动都是基于WebRTC,优点不再赘述,我们这里先说说可能需要面临的问题:WebRTC的服务器部署非常复杂,可…