scala的apply方法

package cn.itcast

/**
* Created by lishas on 2016/8/22.
*/
object ApplyDemo {

def apply(): Unit ={
println("apply invoked")
}

def apply(name:String):String={
name
}

def apply(name:Int):Int={
println("Int")
name
}

def main(args: Array[String]) {
//val a=ApplyDemo("tom")
val a=ApplyDemo(10)

println(a)

val arr=Array(1,2,3,4,5,6,7,8,9)
}
}

当获取伴生对象,Array不加括号,加括号就是调用apply方法

时间: 2024-10-11 03:51:23

scala的apply方法的相关文章

Scala 中apply方法的用法

Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来增强灵活性.关于协议在Python中是挺多的,看看Python的对象协议,有很多很多,如果对Python的对象协议了解(不了解的可以点击此处)的比较深刻的话,其实scala的apply方法也是很好理解的,比如说 Scala 为配合 DSL 在方法调用时有这么一条约定: 在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号.如 "0 to 2",实际完整调用是 "0.

每天学一点Scala之apply方法

apply方法一般什么地方出现 此方法一般在伴生对象中实现的 目的: 改变了创建伴生类实例的方式,不再通过new的方式,而是直接使用类名() 的方式,scala底层会隐式的调用apply方法 package com.xej.learning.apply /**   * apply方法: 就是创建对象时,不再使用new的形式,而是直接使用了类名()的形式   */ private[apply] class Storm object Storm{    //创建伴生类的对象时,会隐式的调用这个的  

scala中object和class的理解---apply方法是初始化方法

1.class Scala的类和C#中的类有点不一样,诸如: 声明一个未用priavate修饰的字段 var age,scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set ,这和C#的简易属性类似:若使用了private修饰,则它的方法也将会是私有的.这就是所谓的统一访问原则. 细节的东西太多,还是上代码在注释里面细讲吧 [java] view plain copy //类默认是public级别的 class Person{ var age=18  //字段必须得初始化()

(转)scala apply方法 笔记

在akka源码中有这样一个Cluster类. 使用方法是这样的:val cluster = Cluster(context.system); 作为scala菜鸟的我,并没有找到Cluster(system..)这个有参的构造方法.于是开始接着学习scala. Cluster是一个object单例对象. Scala比Java更面向对象的一个方面是Scala没有静态成员.替代品是,Scala有单例对象:singleton object. 当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象

scala入门-08 apply方法和单例对象的使用

首先 在scala下的 org.scala.clazz下创建UsageOfApply.scala 我们做过Java开发都知道 main方法中的对象都是静态的,而scala object对象的方法都是静态方法 接下来 我们看下 apply是如何使用的 当 val applyTest = new ApplyTest() 会导致apply方法的调用并返回该方法调用的值,也就是ApplyTest的实例化对象 Class中也可以由apply方法,其使用方法如下所示: 由于 object中的方法和属性都是静

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

第1节 Scala基础语法:scala中的方法源码分析

val list=List(1,2,3,4) list.reduce((x:Int,y:Int)=>x+y)--->list.reduceLeft((x:Int,y:Int)=>x+y) var first = true var acc:Int = 0 op=(x:Int,y:Int)=>x+y for循环第一次循环:acc=1 first = false第二次循环:acc=op(1,2)=1+2=3第三次循环:acc=op(3,3)=3+3=6第四次循环:acc=op(6,4)=

call 方法和 apply方法

1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,argArray]])

.call方法和.apply方法

.call 在方法后面加上.call.例: [].push.call(arr,"1","p") .call实现了.push方法的this指向([]-->arr),就相当于push方法作用与arr上了,后面的参数不变 .apply 在方法的后面加入.apply.例: [].push.apply(arr,["p","1"]) .apply方法实现了.push方法的this指向,使之作用于第一个参数arr上,把原先的参数用数组