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

本文探讨了Scala中apply方法的使用,它是函数调用语法背后的关键。通过StringOps和BigInt等示例,展示了apply如何简化对象创建。此外,还介绍了在伴生对象中的apply方法用于数组创建,并提供了自定义类应用apply方法的练习,强调了object作为单例对象的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本文学习源自: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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值