美文网首页
运算符重载 高阶函数

运算符重载 高阶函数

作者: 闪客飞飞 | 来源:发表于2020-12-26 10:00 被阅读0次

委托属性
class Foo{
var p:Type by Delegate()
}

使用委托属性: 惰性初始化 和 by lazy()

lazy 默认情况下是线程安全的

高阶函数:以另一个函数作为参数或者返回值的函数

定义一个高阶函数
fun twoAndThree(operation:(Int,Int)->Int){
val result=operation(2,4)
println("this result is ${result})
}

twoAndThree{a,b->a=b}

函数声明:
fun String.filter(predicate:(Char)->Boolean):String{}
返回值类型 参数类型 参数的返回值类型

fun String.filter(predicate:(Char)->Boolean):String{
val sb=StringBuilder();
for(index in 0 until length){
if(predicate(get(index))) sb.appeng(get(index))
}
return sb.ToString()
}

返回函数的函数
enum class Delivery {STANDARD,EXPENDITED }
class Order(val itemcount:Int)

fun getShippingCostCalculator( delivery:Delivery):(Order)->Double{
if(delivery == Delivery.STANDARD){
return {order->6+2.1order.itemCount}
}
return {order->1.2
order.itemCount}
}

val calculator= getShippingCostCalculator(Deliver.STANDARD)
println(calculator(Order(3)))

内联函数inline
标记一个函数,在函数被使用的时候编译器并不会生成函数调用的代码而是使用函数实现的真实代码替换每一次的函数调用。j减少开销不会产生额外的类和对象,

声明带实化类型的函数
函数声成用inline 并且用reififed 标记类型的参数您就能该函数检测Value 是不是T的实例了

inline fun <feified T> isA (value :Any) =value is T
println(isA<String>("abe")) true
println(isA<String>(123)) false

标准库函数 filterIsInstance 这个函数接受一个集合然后选择指定类的实例 然后返回这些被选中的实例

val items=listof("one",1,"two")
println(items.filterIsInstance<String>()) ["one","two"] 在返回的时候类型的实参已知了

inline fun <reified T> Iterable<*>.filterIsInstance():List<T>{
val destination =mutableListOf<T>()
for( element in this){
if(element is T){`
destination.add(element)
}
}
return destination
}

相关文章

  • Kotlin的Android广播、高阶函数探究(三)

    1、repeat函数2、扩展函数3、运算符重载 operator4、动态注册一个广播5、高阶函数6、内联函数 in...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • C++面向对象-运算符重载

    运算符重载 运算符重载又称为操作符重载,可以为运算符增加一些新的功能,全局函数和成员函数都支持运算符重载,我们通过...

  • 运算符重载 高阶函数

    委托属性class Foo{var p:Type by Delegate()} 使用委托属性: 惰性初始化 和 b...

  • 日记之旅第七天

    上午:重点讲解了函数重载,其中包括运算符重载,函数成员重载。运算符重载结合了昨天所讲的友元函数一起使用 下午:复习...

  • 4.0 C++远征:重载运算符

    重载运算符 [TOC] 四、重载运算符 ​ 概念 : 给原有运算符赋予新功能。 ​ 本质 : 函数重载。 ...

  • c++ 运算符重载

    重载方法 运算符的重载实质上是函数的重载。函数的重载就是对一个已有函数赋予新的含义,使之实现新的功能。 重载运算符...

  • C++运算符重载

    C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...

  • 运算符重载

    运算符重载 运算符重载的本质是函数重载。 语法格式 operator 运算符名称 在一起构成了新的函数名。比如对于...

  • 1.2.19_C++ 函数调用运算符 () 重载

    C++ 重载运算符和重载函数 函数调用运算符 () 可以被重载用于类的对象。当重载 () 时,您不是创造了一种新的...

网友评论

      本文标题:运算符重载 高阶函数

      本文链接:https://www.haomeiwen.com/subject/styunktx.html