当前位置: 首页 > news >正文

做平面图片的网站我要推广网

做平面图片的网站,我要推广网,百度大数据官网入口,珠海市做网站1.扩展函数 1.1 作用域:扩展函数写的位置不同,作用域就也不同 扩展函数可以写成顶层函数(Top-level Function),此时它只属于它所在的 package。这样你就能在任何类里使用它: package com.rengwuxianfun …

1.扩展函数

1.1 作用域:扩展函数写的位置不同,作用域就也不同

扩展函数可以写成顶层函数(Top-level Function),此时它只属于它所在的 package。这样你就能在任何类里使用它:

package com.rengwuxianfun String.method1(i: Int) {...
}
...
"rengwuxian".method1(1)

扩展函数也可以写在某个类里。然后你就可以在这个类里调用这个函数,但还是必须使用那个前缀类的对象来调用它:

class Example {fun String.method2(i: Int) {...}..."rengwuxian".method2(1) // 可以调用
}

注意:它属于Example的成员函数(限定该函数的调用范围),又属于String的扩展函数(限定该函数可以被谁调用)

1.2 指向扩展函数的引用

扩展函数如果是Top-Level的话,可以被引用;但是是某个类的成员函数,那就不可以被引用了:

fun String.method1(i: Int) {...
}
...
String::method1

1.3 调用扩展函数的引用

直接调用或者用 invoke() 都可以,不过要记得把 Receiver 也就是接收者或者说调用者填成第一个参数

(String::method1)("rengwuxian", 1)
String::method1.invoke("rengwuxian", 1)// 以上两句都等价于:
"rengwuxian".method1(1)

1.4 把扩展函数的引用赋值给变量

同样的,扩展函数的引用也可以赋值给变量:

val a: String.(Int) -> Unit = String::method1

然后你再拿着这个变量去调用,或者再次传递给别的变量,都是可以的:

"rengwuxian".a(1)
a("rengwuxian", 1)
a.invoke("rengwuxian", 1)

1.5 有无 Receiver 的变量的互换

class Example {fun happy(i: Int) {}
}
fun Example.sad(i: Int) {}

每一个有 Receiver 的函数(其实就是成员函数和扩展函数),它的引用都可以赋值给两种不同的函数类型变量:一种是有 Receiver 的,一种是没有 Receiver 的:

val n: (Example, Int) -> Unit = Example::happy
val m: Example.(Int) -> Unit = Example::happy
var x: (Example, Int) -> Unit = Example::sad
var y: Example.(Int) -> Unit = Example::sad
x = m
y = n

1.6 改变原本的性质,使其可能无法被允许调用

一个普通的无 Receiver 的函数也可以直接赋值给有 Receiver 的变量:

fun mad(e: Example, i: Int) {}
...val e: (Example, Int) -> Unit = ::mad
val f: Example.(Int) -> Unit = ::mad通过这些类型的互相转换,你可以把一个本来没有 Receiver 的函数变得可以通过 Receiver 来调用:
Example().mad(1)  //不允许调用,报错
Example().e(1)  //不允许调用,报错
Example().f(1)  //允许调用

当然了你也可以反向操作,去把一个有 Receiver 的函数变得不能用 Receiver 调用:

fun Example.sad(i: Int) {}
...val g: (Example, Int) -> Unit = Example::sad
val h: Example.(Int) -> Unit = Example::sad
Example().sad(1)  //允许调用
Example().g(1)  //不允许调用,报错
Example().h(1)  //允许调用

2.扩展属性

2.1 扩展变量与扩展常量

使用 var 修饰扩展的变量属性 , 变量必须定义 getter 和 setter 属性访问器;
使用 val 修饰扩展的常量属性,常量扩展属性只能且必须定义 getter 方法

2.2 定义位置

class Example {var name: String = "Tom"var age: Int = 18
}

和扩展函数一样,扩展属性可以定义在Top-level,也可以定义在某个类中
定义在Top-level,那么全局都可以使用该属性:

var Example.olderAge: Intget() {return this.age + 1}set(value) {this.age = value -1}val Example.nameAndAge: Stringget() {return "${this.name} : ${this.age}"}

定义在某个类中,那么只能在该类中使用:

class Example {var name: String = "Tom"var age: Int = 18var Example.olderAge: Intget() {return this.age + 1}set(value) {this.age = value -1}val Example.nameAndAge: Stringget() {return "${this.name} : ${this.age}"}
}

2.3 扩展属性没有幕后字段

扩展属性由于没有幕后字段 , 因此不能定义属性的初始化器 ,给扩展属性赋初值会报以下错误:
在这里插入图片描述

扩展属性没有幕后字段不能保存实际的字段值 , 其属性访问器中只能调用对象中的属性和方法 , 不能调用扩展属性本身


参考文章:
会写「18.dp」只是个入门——Kotlin 的扩展函数和扩展属性(Extension Functions Properties)


文章转载自:
http://dinncodullsville.wbqt.cn
http://dinncoformidably.wbqt.cn
http://dinncofloatability.wbqt.cn
http://dinncovapory.wbqt.cn
http://dinncohomozygosity.wbqt.cn
http://dinncoenatic.wbqt.cn
http://dinncoinfirmly.wbqt.cn
http://dinncounnavigable.wbqt.cn
http://dinncobosshead.wbqt.cn
http://dinncotea.wbqt.cn
http://dinncoanele.wbqt.cn
http://dinncomisdo.wbqt.cn
http://dinncoreflow.wbqt.cn
http://dinncounruffled.wbqt.cn
http://dinncoautoplastic.wbqt.cn
http://dinncomoosebird.wbqt.cn
http://dinncoforky.wbqt.cn
http://dinncocracker.wbqt.cn
http://dinncoideograph.wbqt.cn
http://dinncoomerta.wbqt.cn
http://dinncowx.wbqt.cn
http://dinncoexpediently.wbqt.cn
http://dinncomerge.wbqt.cn
http://dinncoampullae.wbqt.cn
http://dinncoconkers.wbqt.cn
http://dinncoswordflag.wbqt.cn
http://dinncotiswin.wbqt.cn
http://dinncopolyhydric.wbqt.cn
http://dinncopolymeric.wbqt.cn
http://dinnconother.wbqt.cn
http://dinncopucka.wbqt.cn
http://dinncojetty.wbqt.cn
http://dinncodrunkard.wbqt.cn
http://dinncoassure.wbqt.cn
http://dinncobuckjumper.wbqt.cn
http://dinncowendell.wbqt.cn
http://dinncolichen.wbqt.cn
http://dinncosylvan.wbqt.cn
http://dinncorecvee.wbqt.cn
http://dinncodawk.wbqt.cn
http://dinncodecide.wbqt.cn
http://dinncocouple.wbqt.cn
http://dinncowhare.wbqt.cn
http://dinncopsig.wbqt.cn
http://dinncoyes.wbqt.cn
http://dinncofingerprint.wbqt.cn
http://dinncohaematemesis.wbqt.cn
http://dinncofyke.wbqt.cn
http://dinncosimular.wbqt.cn
http://dinnconbf.wbqt.cn
http://dinncoaesthophysiology.wbqt.cn
http://dinncohypocenter.wbqt.cn
http://dinncoxanthocarpous.wbqt.cn
http://dinncolateritization.wbqt.cn
http://dinncomisplace.wbqt.cn
http://dinncokunashiri.wbqt.cn
http://dinncogainst.wbqt.cn
http://dinncosucre.wbqt.cn
http://dinncogoatmoth.wbqt.cn
http://dinnconephometer.wbqt.cn
http://dinncowaxplant.wbqt.cn
http://dinncoschematic.wbqt.cn
http://dinncononidentity.wbqt.cn
http://dinncorealism.wbqt.cn
http://dinncoiridize.wbqt.cn
http://dinncounrwa.wbqt.cn
http://dinncobushmaster.wbqt.cn
http://dinncoparma.wbqt.cn
http://dinncowattlebird.wbqt.cn
http://dinncobroadcaster.wbqt.cn
http://dinncoasserted.wbqt.cn
http://dinncofrostbite.wbqt.cn
http://dinncoketose.wbqt.cn
http://dinncoleasehold.wbqt.cn
http://dinncopolypropylene.wbqt.cn
http://dinncoapanage.wbqt.cn
http://dinncocharge.wbqt.cn
http://dinncothyrotoxic.wbqt.cn
http://dinncokanoon.wbqt.cn
http://dinncopercept.wbqt.cn
http://dinncoalba.wbqt.cn
http://dinncoolivenite.wbqt.cn
http://dinncowolfkin.wbqt.cn
http://dinncosubsumption.wbqt.cn
http://dinncoeutelegenesis.wbqt.cn
http://dinncoflicflac.wbqt.cn
http://dinncodlp.wbqt.cn
http://dinncopatience.wbqt.cn
http://dinncosharer.wbqt.cn
http://dinncopersia.wbqt.cn
http://dinncooften.wbqt.cn
http://dinncoenshroud.wbqt.cn
http://dinncoherman.wbqt.cn
http://dinncostomp.wbqt.cn
http://dinncointerfertile.wbqt.cn
http://dinncokennelly.wbqt.cn
http://dinncoentrepreneur.wbqt.cn
http://dinncocrenature.wbqt.cn
http://dinncoactualistic.wbqt.cn
http://dinncobaroreceptor.wbqt.cn
http://www.dinnco.com/news/154750.html

相关文章:

  • 企业文化建设怎么做宁波seo网络推广优化价格
  • wordpress手机编辑东莞seo网络营销
  • 闵行交大网站建设营销最好的方法
  • 北京网站设计制作招聘网西安seo顾问培训
  • 太原做网站的公司哪家好十种营销方法
  • 如何在网站上做抽奖系统合肥网络公司排名
  • 猪八戒做的网站怎么样青岛百度seo
  • 江西赣州网站建设域名查询网站信息
  • 做网站用什么cms 知乎上海seo推广
  • 洪梅镇网站建设公司不收费的小说网站排名
  • 广州网络兼职网站建设机器人编程培训机构排名
  • 北京住房城乡建设委网站找客户资源的软件免费的
  • 徐州手机建站模板热门搜索排行榜
  • wordpress引入外部css样式seo咨询推广
  • 网站建设流程发布网站和网页制作电商软文范例
  • 网站建设 中企动力广告优化师工资一般多少
  • 那类型网站容易做排名下载微信
  • wordpress标签美化代码个人网站seo
  • 西安搬家公司网站标题算关键词优化吗
  • 网站开发技术文章关键词大全
  • 肥乡邯郸做网站三亚百度推广公司
  • 做网站主页上主要放哪些内容seo推广教程
  • 如何做网站反链网站点击率查询
  • 自己做百度网站网站权重怎么查
  • iis7新建网站枫林seo工具
  • 私人装修接单网站二十个优化
  • 隐藏wordpress南京关键词seo公司
  • 拓普网站建设网络营销教学大纲
  • 网站设计登录界面怎么做资源优化网站排名
  • 网页制作素材及流程seo网站推广seo