Scala中的Apply

/**
 * Created by Administrator on 2014-12-31.
 */
class ApplyTest {
  def apply() = "Apply customer"

  def test(): Unit = {
    println("test")
  }
}

object ApplyTest{
  def apply() = new ApplyTest

  def static: Unit ={
    println("i‘m a static method")
  }
}

object Apply {
  def main(args: Array[String]) {
    val app = ApplyTest()  //这里使用的是object AppyTest  , 因为apply中实例化了class AppleTest,所以才能调用test
    app.test

    val app1 = new ApplyTest  //这里实例化的是class ApplyTest
    app1.test

    println(app())
    println(app1())
  }
}
时间: 2024-12-19 08:58:51

Scala中的Apply的相关文章

Scala学习回顾(五)---- scala中的apply

注:本文学习源自:DT大数据梦工厂(微信公众号:DT_Spark) 在Scala中,我们通常都会使用类似函数调用的语法.举例来说,如果s是一个字符串,那么s(i)就是该字符串的第i个字符.(而在java中,你会这样写:s.charAt(i).)在IDEA中运行如下代码: println("Hello(4)")//将打印出'o' 你可以把这种用法当做是()操作符的重载形式,它背后的实现原理是一个名为apply的方法.举例来说,在StringOps类的文档中,你会发现这样一个方法: def

Scala中apply的用法

Scala中的 apply 方法有着不同的含义, 对于函数来说该方法意味着调用function本身, 以下说明摘自Programming in Scala, 3rd Edition Every function value is an instance of some class that extends one of several FunctionN traits in package scala, such as Function0 for functions with no parame

【转】Scala 中的 Stream

///////////////////////////////////// def numsFrom(n: Int): Stream[Int] = n #:: numsFrom(n + 1) def testStream = { val tenOrMore = numsFrom(10) println(tenOrMore) println(tenOrMore.tail) println(tenOrMore.tail.tail) println(tenOrMore.tail.tail.tail)

Scala之Object (apply) dycopy

一.前言 前面学习了Scala的Methods,接着学习Scala中的Object 二.Object Object在Scala有两种含义,在Java中,其代表一个类的实例,而在Scala中,其还是一个关键字,本篇首先将会把object当成一个类的实例看待,展示如何将对象从一种类型转化为另一种类型,之后将展示如何创建单例对象,Scala中还存在包对象,在Scala中,经常有如下定义 type Throwable = java.lang.Throwable type Exception = java

scala学习手记16 – scala中的static

前面两节学了scala的对象和伴生对象,这两个在使用的时候很有些java的静态成员的意思. scala中没有静态字段和静态方法.静态成员会破坏scala所支持的完整的面向对象模型.不过可以通过伴生对象实现对scala的类一级的操作. 回过头来再看一遍那个Marker的例子,略做了一些调整: class Marker private(val color: String) { println("Creating " + this) override def toString(): Stri

5.scala中的对象

排版乱?请移步原文获得更好的阅读体验 1.单例对象 scala中没有静态类或者静态方法,都是通过object实现的,它表示某个类的单例对象.如object People是class People的单例对象. 2.伴生对象 java中有些类可能会既有静态方法又有实例方法,在scala中静态方法存在于对象中,也就意味中scala中需要有这么一个东西,它既是类,也含有对象.其中的对象就是类的伴生对象,同样的,类就是对象的伴生类.需要注意的是类和它的伴生对象可以相互访问私有属性,它们也必须存在于同一个源

Spark源码的角度思考Scala中的模式匹配

学习了从Spark源码的角度思考Scala中的模式匹配,如case class应用,伴生对象中用apply,所以没有new class,直接进行模式匹配,例子如下 Case class RegisterWorker( Id: string, Host: string, Port: int, Cores:int, Memory:int, webUiPort:int, publicAddress:string, Extend DeployMessage{ Utils.checkHost(host,”

Scala中 object 和 class的区别

object 在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式,例如Array.toString.对象的构造器在第一次使用的时候会被调用,如果一个对象从未被使用,那么他的构造器也不会被执行:对象本质上拥有类(scala中)的所有特性,除此之外,object还可以一扩展类以及一个或者多个特质:例如, abstract class ClassName(val parameter){} object Test exte

Scala中的协变(+),逆变(-),上界(<:),下界(>:)

对于一个带类型参数的类型,比如 List[T],如果对A及其子类型B,满足 List[B]也符合 List[A]的子类型,那么就称为covariance(协变) ,如果 List[A]是 List[B]的子类型,即与原来的父子关系正相反,则称为contravariance(逆变). 如果一个类型支持协变或逆变,则称这个类型为variance(翻译为可变的或变型),否则称为invariant(不可变的)   在Java里,泛型类型都是invariant,比如 List<String> 并不是 L