首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin型 ① ( 型类 | 型参数 | 型函数 | 多型参数 | 类型约束 )

, 主构造函数之前 , 该型参数 T 是 类型占位符 , 在 该型类类中 可以使用 类型占位符 T 作为一个类 使用 , 可以 定义 T 类型成员属性 主构造函数中可以接收 T 类型的实例对象作为参数..., T 类型可以 作为函数的返回值 ; 通常情况下 , 型参数 都使用 T 表示 , 使用其它字母 或者 字符串 都可以表示 型参数 , 但是 约定俗成 都使用 T 来表示型 ; 代码示例 :...---- 函数 的 参数 或 返回类型类型 , 则该函数称为 型函数 ; 代码示例 : 该代码中 , 型函数 logT 的 参数 和 返回值 都是 T 型参数 类型 ; class...Student(_item: T) { var item: T = _item // 型函数 参数 和 返回值 都是 T 类型 fun logT(t: T): T{...---- 型函数 中 如果涉及到 匿名函数 参数 , 匿名函数 的 参数返回值 都是型 的话 , 在该型函数 中可能需要使用多个型 , 使用不同的字母表示不同的型 ; 如果函数中 引入了新的类型

2.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin】函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回类型 )

文章目录 一、函数引用作为函数参数 二、函数类型作为函数返回值 一、函数引用作为函数参数 ---- 函数 作为参数 , 有两种方式 : 传递 Lambda 表达式 , 也就是 匿名函数 作为参数值 ;...say hello" } 执行结果 : student Tom 18 years old, say hello student Jerry 17 years old, say hello 二、函数类型作为函数返回值...---- 函数 的 返回类型 , 也可以是 函数类型 ; 也就是说 匿名函数 , Lambda 表达式 可以作为 函数的返回值 ; 代码示例 : 下面的代码中 , returnFun 函数的返回值...是一个函数类型 (String)->String , 返回的是一个 匿名函数 Lambda 表达式 ; 使用 var fun0 变量 接收 上述函数 返回的 Lambda 表达式 , 并执行该 匿名函数...; fun main() { // 接收函数类型返回值 var fun0 = returnFun(); // 执行 返回的 函数 var str = fun0("Tom

2.6K10

Kotlin型总结 ★ ( 型类 | 型参数 | 型函数 | 多型参数 | 类型约束 | 可变参数结合型 | out 协变 | in 逆变 | reified 检查型参数类型 )

主构造函数中可以接收 T 类型的实例对象作为参数 , T 类型可以 作为函数的返回值 ; 通常情况下 , 型参数 都使用 T 表示 , 使用其它字母 或者 字符串 都可以表示 型参数 , 但是 约定俗成...---- 函数 的 参数 或 返回类型类型 , 则该函数称为 型函数 ; 代码示例 : 该代码中 , 型函数 logT 的 参数 和 返回值 都是 T 型参数 类型 ; class...---- 型函数 中 如果涉及到 匿名函数 参数 , 匿名函数 的 参数返回值 都是型 的话 , 在该型函数 中可能需要使用多个型 , 使用不同的字母表示不同的型 ; 如果函数中 引入了新的类型...(t: T) } 十、型 invariant 不变 ---- 在 型类 中 , 如果 既将 类型 作为 函数的参数 类型 , 又将 类型 作为 函数的返回类型 , 则在 声明 型参数...类型 时 , 既不使用 in 关键字 , 又不使用 out 关键字 ; 代码示例 : 在下面的接口中 , 类型 即用于作为 返回值 , 又用于作为参数 ; interface ProducerOrConsumer

3.7K10

Kotlin 型:类型参数约束

上一篇文章讲了 Kotlin 型:基本使用,接下来我们再进一步了解型使用相关的进阶知识。本篇是 Kotlin 类型参数约束的讲解,更多内容可点击链接查看。...Kotlin 型:基本使用Kotlin 型:类型参数约束系列持续更新中,欢迎关注订阅。...,计算返回「数值类型列表」中的每一个元素的和,会发现有点棘手:因为「类型参数」T 可以是任意类型,我们根本无法编写出一个适用于「任意类型」的sum()函数。...将一个类型指定为「类型形参」的「上界约束」,那么在使用具体类型作为类型实参」时,这个具体的类型必须是这个上界约束的类型或者它的子类型。...当我们定义一个范型类/范型函数时,由于「类型参数」在被「类型实参」替换时可使用「可空类型」和「非空类型」这两种类型,这会迫使我们在做具体实现要考虑可空类型,带来了不必要的复杂性。

2.1K31

From Java To Kotlin 2:Kotlin 类型系统与型终于懂了

Kotlin 中,不存在真正没有返回值的函数,所有「没有返回值」的函数实质上的返回类型都是 Unit,而返回值也都是 Unit 这个单例对象。...这种情况下,我们遇到了一个悖论,即必须返回一个值,但却永远找不到合适的返回值 #### Nothing的作用: 作为函数 `永远不会返回结果` 的提示 ``` fun nothing() : Nothing...这个类型则没有太多实际的意义。 - 当 Nothing 作为函数返回值时,意味着这个函数**永远不会返回结果**,而且还会截断程序的后续流程。Kotlin 编译器也会根据这一点进行流程分析。...in位置,而函数返回类型叫作out位置 #### 协变 :保留子类型化关系 如果在定义的型类和型方法的型参数前面加上out关键词,说明这个型类及型方法是协变,简单来说类型A是类型B的子类型...| 型函数 | | 有界类型参数 | class Box | class Box> | 型约束 | | 上界通配符

41850

Kotlin 型:基本使用

Kotlin 中声明和使用型类、型函数的基本概念和 Java 相似,有 Java 型概念的情况下,不用详细解释或者做进一步了解,也能够很容易地上手使用型。...Kotlin 型:基本使用Kotlin 型:类型参数约束系列持续更新中,欢迎关注订阅。为什么需要型假如我们想实现自定义的列表类型,用于存放数值、字符串或其他具体的类型。...// 编译出错,类型不匹配型机制允许我们在编码的时候,使用占位符作为类型(即「类型参数」代替实际使用时的类型(即「类型实参」)。如何区别上述两个概念?...定义型类、型函数的方式如下:// --- 型函数 ---fun run(param: P) // 仅用于函数参数,定义在型类、型接口中fun run(): R // 仅用于函数返回值...// Always true了解到这里,就掌握了基本的型使用方式:用「类型参数」作为占位符,定义型类、型函数使用型类、型函数时,需要传递具体类型作为类型实参」。

1.7K30

Kotlin入门(11)江湖绝技之特殊函数

型函数 函数的输入参数类型必须在定义函数时就要指定,可是有时候参数类型是不确定的,只有在函数调用时方能知晓具体类型,如此一来要怎样声明函数呢?...,这正是型对象的写法,“Array”可称作型变量,至于arrayOf便是本文要说的型函数了。...下面举个型函数的定义例子,目的是把输入的可变参数逐个拼接起来,并返回拼接后的字符串,示例代码如下: //Kotlin允许定义全局函数,即函数可在类外面单独定义,然后其他类也能直接调用 fun ...不过有个例外情况,如果参数类型都是继承自某种类型,那么允许在定义函数时指定从这个基类化开,凡是继承自该基类的子类,都可以作为输入参数进行函数调用,反之则无法调用函数。...T的参数,然后低阶函数的返回值是Boolean类型

1.2K10

Kotlin学习之路(4)函数的运用

public 表示该函数为公共方法,而Kotlin默认就表示函数是公开的,所以省略了关键字 ③ Java使用 void表示该函数没有返回值,而Kotlin中没有关键字void ,若没有返回值不用特别声明...【几种特殊的函数】 型函数 按照之前的例子,函数的输入参数类型必须定义函数的时候需要指定 例如:var int_array:Array = arrayOf(1,2,3) 定义型函数的时候...>即可 内联函数 前面我们定义的型函数appendString时,是把它作为一个全局函数,也就是在类外定义,而不是在类内部定义。...因为类的成员依赖于类,只有型类才能拥有成员型函数,而普通类是不允许定义型函数的,否则编译器直接报错。...不过也有例外当参数类都是继承于某种类型,那么允许在定义函数时指定从这个基类化开,凡是继承自该基类子类,都可以作为输入参数进行调用,反之无法调用!

72210

Kotlin Vocabulary | Reified: 类型擦除后再生计划

但是使用型也会有一些限制,比如当您在型函数中想要获取型所表示类型的具体信息时,编译器就会报错,提示说相关的信息不存在。而 "reified" 关键字,正是为了解决此类问题诞生的。...解决这一问题的一个方法,是将型实际代表的类型信息作为一个参数传递给函数。...为了达到这一目标,Kotlin 提供了一个特别的关键字 reified,使用它就可以在型函数中获取所需的类型信息。只要您对型的实现方式有所了解,就可能会不禁惊呼: 这怎么可能!...但是,当在型函数中需要获取类型信息时,类型擦除的实现方式就显得力不从心了。...使用内联函数,编译器可以在复制函数体时,同样将返回类型替换为实际所表示的类型

1.2K10

Kotlin | 9.

本章内容包括: 声明型函数和类 类型擦除和实化类型参数 声明点变型和使用点变型 9.1 类型参数 // 如果要创建一个空的列表,必须显示的指定,有值的话可以被推导出来...----------------------*/ // slice 型函数类型形参为T fun List.slice(indices: IntRange...* 第三个 :返回 类型使用了类型形参 */ // 代码清单9.1 调用型函数 val letters = ('a'..'...会提示报错 // println(Validators[String::class].validate(42)) 总结 Kotlin型和 Java 相当接近:它们使用同样的方式声明型函数型类...在Kotlin 中既可以为整个型类指定变型(声明点变型),也可以为类型特定的使用指定变型(使用点变型)。 当确切的类型实参是未知的或者不重要的时候,可以使用星号投影语法。

1.8K10

转向Kotlin——

KotlinKotlin型并没有提供通配符,取而代之的是out和in关键字。用out声明的型占位符只能在获取类型值得地方,如函数的返回值。...如果我们的类能够仅仅只返回T类型的值,那么的确可以将其子类化。但如果在声明型时未使用out声明T呢?...这种声明在Kotlin中称为类型投射:from不是一个单纯的数组,而是一个被限制(投射)的数组,我们只能对这个数组调用那些返回值为类型参数T的函数,在这个例子中,我们只能调用get方法,这就是我们事先使用处的类型变异的方案...型函数 不仅类可以有型参数,函数一样可以有型参数。型参数放在函数名称之前。...fun getList(item: T): List { ... } 调用型函数时,应该在函数名称之后指定调用端类型参数。

91720

Kotlin学习日志(四)函数

fun Test():Int Kotlin设计师的初衷就是把函数当成一个特殊的变量,既然函数被当作一种特殊的变量,同时每个变量都有变量类型,假如函数存在返回参数,那么自然把返回参数的类型作为该函数的变量类型...,要是函数不存在返回参数,也就是Java中的返回void,Java中使用void表示不存在返回参数,而Kotlin返回参数是一定存在的,即使开发者不声明任何返回参数,Kotlin函数也会默认返回一个Unit...三、特殊函数 3.1 型函数 我们先声明几个型 var int_array:Array = arrayOf(1,2,3) var long_array:Array...注意到尖括号内部制定了数组元素的类型,这正是型的写法“”。由“Array”声明而来的变量可称作型变量,至于等号后面的arrayOf*便是型函数。...定义型函数时,需要在函数名称前面添加“”,表示以T声明的参数(包括输入参数和输出参数),其参数类型必须在函数调用时指定,代码示例如下: //Kotlin允许定义全局函数,即函数可在单独的kt文件中定义

1.8K10

Kotlin基础之

作为交换,我们希望得到这些行为:Collection为Collection 声明处变型 假设现有一个Source型接口,没有使用T作为参数的方法,只有一个返回T的方法。...:当类C的型参数T声明为out时,表示T只能出现在C成员的输出位置,作为交换,C是C类型安全的超类。...此时安全地定义投影的型,每个型的具体实例都是型的子类型。 为此,Kotlin提供称为星号投影的语法。 对于Foo,T为带有上界TUpper的协变量,Foo等价于Foo。...如果型有多个类型参数,则每个都可以独立投影。比如,如果类型声明为interface Function 型函数 不仅类可以有类型参数,函数也可以有。...String { // 扩展函数 // ... } 调用型函数,在调用的函数名之后指定具体类型参数。

94470
领券