Scala系列:对象

单例对象

scala没有静态方法和静态字段。scala使用object实现,object定义了单个实例。

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

使用:

  for (i <- 0 to 10) println(Accounts.newUniqueNumber)

对象的构造方法在该对象被第一次使用时调用。

伴生对象

在Java中,常遇到类即有静态属性和方法,又有非静态属性和方法。

Scala中,可以通过类与类同名的“伴生”对象达到相同目的。

类和伴生对象可以互相访问私有属性,它们必须存在同一源文件中。

apply方法

定义和使用object的applay方法,进行创建伴生类实例。

好处:少写了new,在很多场景下用起来方便,看起来清晰。

应用程序对象

每个scala程序必须从一个对象的main方法开始,这个方法的类型为Arra[String] => Unit

扩展App物质,代码放入构造方法体中,

scala -Dscala.time Hello Fred

枚举

scala本身没有枚举类型

标准库里提供Enumeration助手类,可用于产生出枚举。

1 object EventType extends Enumeration {
2   val DDOS, DI = Value
3 }

枚举类型是EventType.Value

给类型起个别名:只有引入的时候有意义

1 object EventType extends Enumeration {
2   type EventType = Value
3   val DDOS, DI = Value
4 }

……

时间: 2024-08-26 07:10:20

Scala系列:对象的相关文章

大数据Scala系列之文件以及正则表达式

大数据Scala系列之文件以及正则表达式1 读取行导入scala.io.Source后,即可引用Source中的方法读取文件信息. import scala.io.Sourceobject FileDemo extends App{val source = Source.fromFile("C:/Users/admin/res.txt")//返回一个迭代器val lines = source.getLines()for(i <- lines)println(i)//内容也可以放到

大数据Scala系列之特质

大数据Scala系列之特质,特质的定义除了使用关键字trait之外,与类定义无异. 特质用来在类之间进行接口或者属性的共享.类和对象都可以继承特质,特质不能被实例化,因此也没有参数. 一旦特质被定义了,就可以使用extends或者with在类中混入特质. 1 作为接口使用的特质特质的定义: trait Logger{//这是一个抽象方法,特质中未被实现的方法默认是抽象的,不需要abstract关键字修饰def log(msg:String)} 子类对特质的实现: class ConsoleLog

好程序员大数据教程分享Scala系列之模式匹配和样例类

好程序员大数据教程分享Scala系列之模式匹配和样例类1.样例类在Scala中样例类是一中特殊的类,样例类是不可变的,可以通过值进行比较,可用于模式匹配.定义一个样例类:1.构造器中每一个参数都是val,除非显示地声明为var 2.伴生对象提供apply ,让你不使用new关键字就能构造出相应的对象case class Point(x: Int, y: Int)创建样例类对象:val point = Point(1, 2)val anotherPoint = Point(1, 2)val yet

Scala伴生对象

Scala伴生对象 大部分Scala的单例对象不是单独存在的,而是同时存在相同名称的类.此时这个单例对象是"类"的伴生对象,而类则是"单例对象"的伴生类.类与它的伴生对象必须在同一个资源文件内. 例如: case class NumberPair(num1: Int, num2: Int) case class Sum(sumResult: Int) object NumberPair {  implicit def add: NumberPair => Su

好程序员大数据学习路线分享Scala系列之集合操作函数

好程序员大数据学习路线继续为大家分享Scala系列之集合操作函数4.6 集合的重要函数4.6.1sum/max/min/count在序列中查找最大或最小值是一个极常见的需求,如下:val numbers = Seq(11, 2, 5, 1, 6, 3, 9) numbers.max //11 numbers.min //1 更高级的例子,其中包含一个书的序列case class Book(title: String, pages: Int) val books = Seq( Book("Futu

好程序员大数据学习路线分享Scala系列之泛型

好程序员大数据学习路线分享Scala系列之泛型,带有一个或多个类型参数的类是泛型的. 泛型类的定义: //带有类型参数A的类定义class Stack[A] {private var elements: List[A] = Nil//泛型方法def push(x: A) { elements = x :: elements }def peek: A = elements.headdef pop(): A = {val currentTop = peekelements = elements.ta

大数据教程Scala系列之方法的嵌套和方法多态

大数据教程为大家分享Scala系列之方法的嵌套和方法多态方法里嵌套定义其他方法示例1object EmbedDemo { def add3(x:Int,y:Int,z:Int)={def add2(x:Int,y:Int)={x+y}add2(add2(x,y),z)} def main(args: Array[String]): Unit = {println(add3(1,2,3)) //6}}示例2def factorial(x: Int): Int = {def fact(x: Int,

好程序员大数据教程分享Scala系列之Option_偏函数_String

好程序员大数据教程分享Scala系列之Option_偏函数_StringOption类型在Scala中Option类型样例类用来表示可能存在或也可能不存在的值(Option的子类有Some和None).Some包装了某个值,None表示没有值. object OptionDemo {def main(args: Array[String]) {val map = Map("a" -> 1, "b" -> 2)val v = map.get("b

好程序员大数据教程Scala系列之样例类_Option_偏函数

好程序员大数据教程Scala系列之样例类_Option_偏函数,在Scala中Option类型样例类用来表示可能存在或也可能不存在的值(Option的子类有Some和None).Some包装了某个值,None表示没有值. object?OptionDemo {??def?main(args: Array[String]) {????val?map = Map("a"?-> 1, "b"?-> 2)????val?v = map.get("b&q

Scala 系列(八)—— 类和对象

一.初识类和对象 Scala 的类与 Java 的类具有非常多的相似性,示例如下: // 1. 在 scala 中,类不需要用 public 声明,所有的类都具有公共的可见性 class Person { // 2. 声明私有变量,用 var 修饰的变量默认拥有 getter/setter 属性 private var age = 0 // 3.如果声明的变量不需要进行初始赋值,此时 Scala 就无法进行类型推断,所以需要显式指明类型 private var name: String = _