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

来源:互联网 发布:望远镜淘宝网 编辑:程序博客网 时间:2024/06/05 11:34

注:本文学习源自:DT大数据梦工厂(微信公众号:DT_Spark)

 

Scala中,我们通常都会使用类似函数调用的语法。举例来说,如果s是一个字符串,那么s(i)就是该字符串的第i个字符。(而在java中,你会这样写:s.charAt(i)。)在IDEA中运行如下代码:

println(“Hello(4)”)//将打印出’o’

你可以把这种用法当做是()操作符的重载形式,它背后的实现原理是一个名为apply的方法。举例来说,在StringOps类的文档中,你会发现这样一个方法:

def apply(n : Int) : Char

也就是说,”Hello”(4)是如下语句的简写:

“Hello”.apply(4)

如果你去看BigInt伴生对象的文档,就会看到让你将字符串或数字转换为BigInt对象的apply方法。举例来说,如下调用

BigInt(“1234567890”)

是如下语句的简写:

BigInt.apply(“1234567890”)

这个语句产生出一个新的BigInt对象,不需要使用new。例如:

BigInt(“1234567890”) * BigInt(“1234567890”)

像这样使用伴生对象的apply方法是scala中构建对象的常用方法。例如,Array(1,4,3,4)返回一个数组,用的就是Array伴生对象的apply方法。

下面我来做一个练习:

 

运行结果:

 

 

再看一个练习:

1、新建一个类:

 

2、额外提一点,放在object对象中的方法都是静态方法,如下所示:

 

运行结果:

 

3、接下来看一下apply方法的使用:

 

运行结果:

 

上面代码当中,我们使用“val a = ApplyTest1()”的使用会导致apply方法的调用并返回该方法调用的值,也就是ApplyTest的实例化对象。

Class中也可以由apply方法,其使用方法如下所示:

 

运行结果:

 

由于object中的方法和属性都是静态的,所以就是单例对象的理想载体,实例代码如下所示:

 

换句话说,object本身就是一个单例对象。

参考资料:

scala学习免费视频,关注TD梦工厂,微信公众账号:DT_Spark
王家林提供全方位的大数据、云计算、移动互联网一站式定制培训课程
如有需求,欢迎联系:
Email:18610086859@126.com
Tel:18610086859 
QQ:1740415547

 

0 0
原创粉丝点击