scala-44:Scala中View Bounds代码实战及其在Spark中的应

本文探讨了Scala中的View Bounds特性,通过代码实战展示如何使用<%进行类型转换,特别是在Spark中的应用。View Bounds允许将不满足Comparable[T]的类型如Int隐式转换为RichInt,以便进行比较操作。在遇到类型不兼容问题时,视图界定提供了解决方案,确保类型安全。

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

内容:

1、View Bounds的代码实战

2、View boundsSpark中的广泛使用

class Pair_NotPerfect[T <% Comparable[T]](val first : T,val second : T){
	def bigger = if(first.compareTo(second) > 0)first else second  
}

class Pair_Better[T <% Ordered[T]](val first : T,val second : T){
	def bigger = if(first > second)first else second  
}

视图界定:<%

   试图界定:是指我们可以把具体的传入的T类型的实例转换成Comparable[T]类型,如果comparable[T]类型不是T类型的父类,使用<%的方式可以进行隐式转换。

    val pair = new Pair_NotPerfect("Spark", "Hadoop")
    println(pair.bigger)
    
    val pairInt = new Pair_NotPerfect(3, 5) //Int -> RichInt
    println(pairInt.bigger)

   例如:上述代码中的Pair传进了参数3,5使用Pair_NotPerfect[T<:Comparable[T]]就会报错,因为参数35不是Comparable[T]的子类型,这样就可以使用<%(视图界定)对其进行隐式转换(Int-> RichInt)。

Pair_NotPerfect[T<:Ordered[T]],Ordered是在Comparable方法的基础上提供了一定的关系操作符(Ordered也是trait泛型),所以可以在比较两个对象的大小的时候配合<%直接比对大小。

   视图界定与隐式转换的过程:在应用类型T无法满足上界Comparable[T]的时候,使用<%做视图界定,将类型T隐式转换成Comparable[T]的子类型,例如整数类型Int会先变成RichInt类型,RichInt是以Comparable为类型上界的,所以用ComparaTo方法,即RichInt中有ComparaTo方法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值