当前位置:网站首页>第42讲:Scala中泛型类、泛型函数、泛型在Spark中的广泛应用
第42讲:Scala中泛型类、泛型函数、泛型在Spark中的广泛应用
2022-07-30 12:20:00 【武念】
泛型:通俗的讲,比如需要定义一个函数,函数的参数可以接受任意类型。我们不可能一一列举所有的参数类型重载(overload)函数。
那么程序引入了一个称之为泛型的东西,这个类型可以代表任意的数据类型。
例如List,在创建List时,可以传入×××、字符串、浮点数等等任意类型。那是因为List在类定义时引用了泛型。
List的定义
sealed abstract class List[+A] extends AbstractSeq[A]
with LinearSeq[A]
with Product
with GenericTraversableTemplate[A, List]
with LinearSeqOptimized[A, List[A]]
with Serializable
其中A就是类型,当然A你可以写成任意的标识符。
泛型应用在类和函数中,代码示例如下:
package com.dt.scala.type_parameterization
//泛型类 F,S,T 是类型,后面引用该类型
class Triple[F,S,T](first: F,second: S,third: T)
object Hello_type_parameterization {
def main(args: Array[String]): Unit = {
//创建一个对象,传入参数类型为 String、Int、Double
val triple1 = new Triple("Spark",3,3.14)
// 可见,定义时使用泛型,在调用时可以根据自己的需要传入任何类型。
//也可以用如下方式创建对象
val triple2 = new Triple[String,String,String]("Spark","Scala","Kafka")
//new 的时候,指定类型。那么传入的参数,必须是指定的类型
// 泛型函数
// 定义一个函数,可以获取各类List的中间位置的值
def getData[T](l: List[T])={
l.take(l.length/2)
}
println(getData(List("a","b","c")))
println(getData(List(1,2,3,4,5,6)))
}
}
边栏推荐
- 电流电压采集模块DAM-6160
- Win11打不开exe应用程序怎么办?Win11无法打开exe程序解决方法
- 基于反步积分滑模摩擦补偿的光电伺服转台控制
- Mysql 批量插入事务唯一键重复处理
- 湖仓一体电商项目(二):项目使用技术及版本和基础环境准备
- Why is Prometheus a monitoring artifact sufficient to replace Zabbix?
- Matlab基础(3)——元胞与结构体
- 关于香港高防IP需要关注的几个问题
- Add the device library after Vivado installation
- Tutorial on using the one-key upgrade function of the RTSP/Onvif video platform EasyNVR service
猜你喜欢

历时两月,终拿字节跳动offer,算法面试题分享「带答案」

微信视频号视频如何下载提取?视频号直播回放如何下载?方法很简单!

刷屏了!!!

概率论得学习和整理6:概率的分布

MySQL【多表查询】

Homework 7.29 correlation function directory and file attributes related functions

【记一个kaggle划水比赛】PetFinder.my - Pawpularity Contest 宠物预测

Unity Beginner 6 - Simple UI production (blood bar production) and audio addition and NPC dialogue bubbles (2d)

电脑奔溃的时候,到底发生了什么?

JD.com was brutally killed by middleware on two sides. After 30 days of learning this middleware booklet, it advanced to Ali.
随机推荐
并行化快速排序设想
物理服务器与虚拟机:主要区别和相似之处
概率论得学习整理--番外3:二项式定理和 二项式系数
概率论的学习和整理--番外4: 关于各种平均数:算术平均数,几何平均数,调和平均数,以及加权平均数和平方平均数 (未完成)
Rust from entry to proficient 02-installation
干货分享:小技巧大用处之Bean管理类工厂多种实现方式
【Kaggle:UW-Madison GI Tract Image Segmentation】肠胃分割比赛:赛后复盘+数据再理解
忆联:激活数据要素价值潜能,释放SAS SSD创新红利
[ASP.NET Core] Dependency Injection for Option Classes
【32. 图中的层次(图的广度优先遍历)】
Greenplum 6.0有哪些不可错过的硬核升级与应用?
WinForm枚举容器中的控件,实现控件统一事件处理机制
初级永磁直线电机双动子电流镜像容错控制
概率论的学习和整理7:理解期望和方差还是要回到随机试验本身,期望不是平均值,方差的公式不同情况不同
Js - 内置对象
int a=8,a=a++,a? int b=8,b=b+1,b?
JD.com was brutally killed by middleware on two sides. After 30 days of learning this middleware booklet, it advanced to Ali.
dolphinscheduler添加hana支持
unity对象池(学习)
C#实现软键盘的制作