Scala的Class、Object和Apply()方法】的更多相关文章

Scala中如果一个Class和一个Object同名,则称Class是Object的伴生类.Scala没有Java的Static修饰符,Object下的成员和方法都是静态的,类似于Java里面加了Static修饰符的成员和方法.Class和Object都可以定义自己的Apply()方法,类名()调用Object下的Apply()方法,变量名()调用Class下的Apply()方法. class ApplyTest{ def apply() { println("This is a class,…
class ApplyTest{ def apply() = "This apply is in class" def test{ println("test") } } //放在 object 对象中的方法都是静态方法 //由于 object 中的方法和属性都是静态的,所以就是单例的理想载体 //object 本身就是一个单例对象 object ApplyTest{ var count = 0 def apply() = new ApplyTest def sta…
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person { var name: String = _ /** * 从构造器 * @param name */ def this(name: String) = { this //注意:从构造器,必须先调用主构造器 this.name = name; } override def toString = { "…
package com.test.scala.test /** * apply 方法 */ object ApplyTest { def main(args: Array[String]): Unit = { //先看一个例子 var a1=Array(5) var a2=new Array(5) //对a1进行输出 for(i<-a1)println(i);//这输出5,大小为1 //对a2进行输出 for(i<-0 to a2.length)println(i);//这个是输出了a2的大小…
当scala中类或者对象有一个主要用途的时候,apply方法就是一个很好地语法糖.请看下面一个简单的例子: class Foo(foo: String) {} object Foo { def apply(foo: String) : Foo = { new Foo(foo) } } 定义了一个Foo类,并且在这个类中,有一个伴生对象Foo,里面定义了apply方法. 有了这个apply方法以后,我们在调用这个Foo类的时候,用函数的方式来调用: object Client { def main…
class ApplyTest(val name:String) { /** * apply源码 * def apply(x: Int, xs: Int*): Array[Int] = { * val array = new Array[Int](xs.length + 1) * array(0) = x * var i = 1 * for (x <- xs.iterator) { array(i) = x; i += 1 } * array * } */ } /** * apply方法是sca…
摘抄两段话: 在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号.如 " to ",实际完整调用是 ".to()".但 "println()" 不能写成 "println "",因为未写出方法调用的接收者 Console,所以可以写成 "Console println " 用括号传递给变量(对象)一个或多个参数时,Scala 会把它转换成对 apply 方法的调用…
将多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,除了使用朴素的循环转换以外,我们还可以利用Javascript的语言特性实现更为简洁优雅的转换.本文将从朴素的循环转换开始,逐一介绍三种常用的转换方法,并借此简单回顾Array.prototype.concat方法和Function.prototype.apply方法.以下代码将以把二维数组降维到一维数组为例. 1. 朴素的转换 function reduceDimension(arr) { var reduced = []; f…
js中apply方法的使用   1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destination, source) { for (property in source) { destination[property] = source[property]; } return destination; } 除此之外,还有种方法,就是:Function.apply(当然使用Function.…
今天看到了js的call与apply的异同,想着整理一下知识点,发现了一篇好文章,分享过来给大家,写的非常好! 参考: http://www.cnblogs.com/delin/archive/2010/06/17/1759695.html http://blog.csdn.net/myhahaxiao/article/details/6952321 1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = functi…