当前位置: 首页 > news >正文

网站在公司做有什么要求吗/三只松鼠搜索引擎营销案例

网站在公司做有什么要求吗,三只松鼠搜索引擎营销案例,松江品划网站建设维护,上海将打造五大未来产业集群Scala的单例对象 Scala不能定义静态成员,而是代之定义单例对象(singleton object)。以object关键字定义。 对象定义了某个类的单个实例,包含了你想要的特性: object Accounts{private var lastNumber 0def newUniqueNumber() { lastNumbe…

Scala的单例对象

Scala不能定义静态成员,而是代之定义单例对象(singleton object)。以object关键字定义。
对象定义了某个类的单个实例,包含了你想要的特性:

object Accounts{private var lastNumber = 0def newUniqueNumber() = { lastNumber += 1; lastNumber}
}

当你在应用程序中需要一个新的唯一账号时,调用Account.newUniqueNumber()即可。
对象的构造器在该对象第一次被使用时调用。

在下面几个场景下可以使用Scala单例对象:
- 作为存放工具函数或常量的地方
- 高效地共享单个不可变实例
- 需要使用单个实例来协调某个服务时

类和单例对象间的差别是,单例对象不带参数,而类可以。因为单例对象不是用new关键字实例化的,所以没机会传递给它实例化参数。每个单例对象都被实现为虚拟类(synthetic class)的实例,并指向静态的变量,因为它们与Java静态类有相同的初始化语义。

独立对象(standalone object)

不与伴生类共享名称的单例对象称为独立对象。它可以用在很多地方,例如作为相关功能方法的工具类,或者定义Scala应用的入口点。

伴生对象(companion object)

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

class Account {val id = Account.newUniqueNumber()private var balance = 0.0def deposit(amount: Double){ balance += amount }...
}object Account { //伴生对象private var lastNumber = 0def newUniqueNumber() = { lastNumber += 1; lastNumber}}

注意

  • 类的伴生对象可以被访问,但并不在作用域当中。Account类必须通过Account.newUniqueNumber()来调用伴生对象的方法。
  • 在REPL中,要同时定义类和对象,必须用粘贴模式。键入:paste,然后键入或粘贴类和对象的定义,最后一Ctrl+D退出粘贴模式。

将伴生对象作为工厂使用

我们通常将伴生对象作为工厂使用。
下面是一个简单的例子,可以不需要使用’new’来创建一个实例了。

class Bar(foo: String)object Bar {def apply(foo: String) = new Bar(foo)
}

继承自类和特质的单例对象

一个object可以扩展类以及一个或多个特质,其结果是一个扩展了指定类以及特质的类的对象,同时拥有在对象定义中给出的所有特性。

继承自抽象类的例子

扩展类的一个有用的使用场景是给出可被共享的缺省对象。举例来说,考虑在程序中引入一个可撤销动作的类:

abstract class UndoableAction(val description: Sting) {def undo(): Unitdef redo(): Unit
}object DoNothingAction extends UndoableAction("Do nothing") {override def undo() {}override def redo() {}
}//打开和保存功能尚未实现
val action = Map("open" -> DoNothingAction, "save" -> DoNothingAction, ...)

DoNothingAction对象可以被所有需要这个缺省行为的地方共用

混入特质的例子

有时,你可以混入像debugger或logging之类的特质来构建对象帮助调试对象,这样使得构建的对象实例具有log之类的方法:

trait Debugger {def log(message: String){//do something with message}
}//no debugger
val child = new Child//debugger added as the object is created
val problemChild = new ProblemChild with Debugger



 

http://www.lbrq.cn/news/1920223.html

相关文章:

  • 兰州网站seo收费标准/山西网络营销外包
  • 凡科网站怎么做建站/中国联通腾讯
  • 苏州做网站平台/设计师培训班多少钱
  • 网站建设引言/百度知道电脑版网页入口
  • 网站管理助手4.0 mysql/烟台seo网络推广
  • 企业网站免费推广的方法./沈阳关键词自然排名
  • wordpress 多个css样式表/南宁seo标准
  • 全国村级网站建设/电商运营怎么做如何从零开始
  • 东莞教育平台网站建设/百度关键词首页排名服务
  • 嘉兴市建设局网站/做网站需要什么条件
  • 贵阳企业做网站/百度官方
  • xp怎么建设网站/如何免费引流推广
  • 网站本地环境搭建/友链交换网站
  • seo点击软件/搜索引擎优化培训
  • 喀什网站制作/网站推广优化方式
  • 海报在线制作网站/外链群发软件
  • 房产网站建设ppt/厦门网
  • 武汉做网站企业/公司网络营销推广软件
  • 哪个网站可以免费学设计/今日新闻快报
  • 免费企业网站建设哪家/百度网页版登录首页
  • 店铺引流推广方案/郑州网站排名优化公司
  • 企业网络营销网站/优化大师有必要安装吗
  • 阿里云 多域名解析 到不同的网站/长沙网站托管优化
  • 无极网最新招聘信息/小红书怎么做关键词排名优化
  • 功能网站模板/百度快速排名优化技术
  • wordpress url 替换/重庆seo排
  • 山东省建设工程协会网站/成都seo论坛
  • 给客户做网站建设方案/山西网络营销外包
  • 山东省城乡与建设厅网站首页/营销策划机构
  • 网站建设制作设计平台/网站运营工作内容
  • Linux运维新手的修炼手扎之第21天
  • omniparser v2 本地部署及制作docker镜像(20250715)
  • Java线程池深度解析与Spring Boot实战指南
  • APP端定位实现(uniapp Vue3)(腾讯地图)
  • 【转】Rust: PhantomData,#may_dangle和Drop Check 真真假假
  • React源码5 三大核心模块之一:render,renderRoot