package z
//需求:定义一个名为getMiddleEle的方法
// 用它来获取当前的列表的中间位置上的值
// 中间的位置的下标 = 长度/2
//目标:
// getMiddleEle(List(1,2,3,4,5)) ===> 5/2 = 2 ===>下标为2的元素是: 3
// getMiddleEle(List(1,2,3,4)) ===> 4/2 = 2 ===>下标为2的元素是: 3
object test9 {
//定义一个函数的格式
//def 函数名 (参数名 : 类型) : 返回值的类型={
// 函数体
// }
//List[Int]: List 是列表,[Int] 是说列表中的每一个元素都是int!
// def getMiddleEle(list: List[Int]): Int = {
// list(list.length / 2)
// }
//
// def getMiddleEle1(list: List[String]): String = {
// list(list.length / 2)
// }
//
// def getMiddleEle2(list: List[Double]): Double = {
// list(list.length / 2)
// }
//类型参数-----泛型(数据类型是变化的)
//(1)可以有多个
//(2)名称合法就行,没有固定的,一般用T (type)
//在scala中用[]表示 在java中,用<>表示
def getMiddleEle[X](list: List[X]): X = {
list(list.length / 2)
}
def main(args: Array[String]): Unit = {
// val rs1 = getMiddleEle(List(1, 2, 3, 4, 5))
// println(rs1)
// val rs2 = getMiddleEle(List("a", "b", "c", "d", "e"))
// println(rs2)
// val rs3 = getMiddleEle[Double](List(1.1,2.2,3.3))
// println(rs3)
// 理解泛型
//1.与数据类型的区别
//List是数据类型,表示有一个列表。[Int]表示泛型。它约定列表中的每一个元素都是Int类型
//val l1 = List[Int](1,2,"a")
//l1.foreach(println)
//2.泛型在编译时生效,在运行时不可见,最后产生的class文件中是没有泛型的
}}