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

做网站找图片抖音seo什么意思

做网站找图片,抖音seo什么意思,临朐网站制作,有没有专门做中式的设计网站当我们在处理可以添加、删除、比较或者连接的类型时,我们通常需要写很多冗长和重复的代码。但在 Kotlin 中,我们可以借助操作符重载,为这些类型写出更具表现力和简洁的代码。操作符重载https://kotlinlang.org/docs/reference/operator-overl…
5bd8d60cccba89f19dc41b65c857a6b7.png当我们在处理可以添加、删除、比较或者连接的类型时,我们通常需要写很多冗长和重复的代码。但在 Kotlin 中,我们可以借助操作符重载,为这些类型写出更具表现力和简洁的代码。
  • 操作符重载

    https://kotlinlang.org/docs/reference/operator-overloading.html

我除了喜欢 Android,还喜欢在合唱团里唱歌,所以就让我们用合唱团的例子来说明操作符重载的好处。假设有一个由歌手组成的合唱团,我们想在合唱团中增加一名歌手,代码如下:
class Choir {    private val singers = mutableListOf<Singer>()    fun addSinger(singer: Singer) {        singers.add(singer)    }    ...}
我们将添加一名新歌手,示例如下:
choir.addSinger(singer)
但是比起这种操作,使用 += 来操作会更适合一些,而且这样调用也更自然。
choir += singer

接着往下读,您会知道:

  • 如何在 Kotlin 中通过操作符重载实现这一点;
  • 什么样的操作符可以被实现以及在 Android 的哪些场景下使用操作符会更有优势;
  • 在实现操作符重载时要注意的最佳实践方法;
  • Kotlin 编译器如何实现操作符重载。

操作符重载的基础

通过操作符重载,可以实现任意类型的一系列预定义操作符。操作符可以通过成员函数或者使用相应的成员函数的扩展函数来重载。比如: + 操作符可以通过 plus() 函数进行重载,+= 操作符可以通过 plusAssign() 函数进行重载。注意,操作符之间不会相互影响: 如果您重载了 +,是不会影响到 ++。

要重载一个操作符,您需要在 fun 的前面添加 operator 关键字,然后指定您想重载的操作符。如果您不添加 operator 关键字,编译器会把它当作一个普通的 Kotlin 函数来处理,甚至不会进行编译!

以下是 Kotlin 中可以重载的操作符:

793d59f94bde6492d22b6eeb90f4b97a.png△ 有关可以重载的操作符及其相应函数的完整列表,

请参见相关文档

  • 相关文档

    https://kotlinlang.org/docs/reference/operator-overloading.html

怎么做

好了,开始吧,我们怎么才能在 Kotlin 中实现操作符的重载?让我们使用初始示例中的 choir 类,我们需要重载 += 操作符来添加一名歌手。
class Choir {    private val singers = mutableListOf()    operator fun plusAssign(singer: Singer) {                singers.add(singer)    }}
您可以这样使用操作符:
data class Singer(val name: String)fun main() {    val choir = Choir()    val singerMeghan = Singer("Meghan")    choir += singerMeghan}
重载的操作符可以使代码更加的简洁和易读。

您希望重载其他哪些操作符?

通常情况下您需要的操作符不止一个,但是重载一个自定义类型的所有操作符可能是没有任何意义的。过度的使用操作符重载会导致代码的可读性变差。所以需要多花点时间思考,对哪些操作符进行重载,可以提升代码的可读性。

我们重载 += 操作符是为了将某人加入合唱团,但我们可能也想看看这个人是否已经是合唱团的成员。要实现这一点,我们需要重载 contains 函数,这样我们就可以使用 in 操作符。

operator fun contains(s: Singer) : Boolean {       return singers.contains(s)}
data class Singer(val name: String) fun main() {    val choir = Choir()    val singerMeghan = Singer("Meghan")    choir += singerMeghan    if(singerMeghan in choir){        println("Meghan is a part of the choir!")    }}

扩展中的操作符重载

也可以通过扩展函数来使用操作符重载。在这个示例中,我们重载了 ViewGroup 的 += 操作符:

operator fun ViewGroup.plusAssign(other: View) = addView(other)

现在给 viewGroup 添加一个 view 是如此的简单!

viewGroup += view

来自其他语言的最佳实践

操作符重载也在许多其他编程语言中使用,比如: C++、Python、Swift 和 PHP。虽然我们在 Kotlin 中暂时还没有明确的最佳实践,但我们可以从这些语言中学习一些:
  • 简洁性并不总是意味着更易读的代码。想一下,如果您的代码中加入了操作符重载,那么您的代码是不是真的会更加易读;
  • 如果重载的结果在语言的上下文中没有什么意义,或者有任何不清晰的地方,您应该考虑使用函数来代替。比如,如果您添加了两本书,那么最终的结果会是什么,并不是马上就能看清楚的。会是一本新书吗?它们会如何组合?如果有疑问,那么您应该用函数来代替;
  • 如果一个操作符被重载了,那么应该考虑一下与之对应的其他操作符也要被重载。比如,如果重载了 -,-= 也要考虑被重载。在我们的合唱团例子中,由于我们可以用 += 添加一名歌手,那么我们也应该可以用 -= 删除一名歌手。

这是怎么实现的?

操作符重载是通过重写操作符的标准函数调用实现的,比如,添加合唱团成员的代码:

val choir = Choir()val singerMeghan = Singer("Meghan")choir += singerMeghan

如果我们看一下反编译的 Java 代码,可以看到它是如何工作的:

Choir choir = new Choir();Singer singerMeghan = new Singer("Meghan");choir.plusAssign(singerMeghan);

编译器只是简单的通过正常的成员函数调用替换了 +=。

总结

操作符重载必须谨慎使用,但是如果您使用得当,它是一个可以使代码更具表现力和更加简洁的强大工具。
  • 确保您使用了operator 关键字,否则 Kotlin 会将函数视为一个普通函数来对待,并且代码也将编译失败;
  • 检查操作符重载是否使代码更加易读;
  • 仔细思考哪些操作符的重载对类型来说更有意义。
052f8d8b673be9cd88b697a697f47840.png

推荐阅读

a6a2e682a595e1dd72039a5534d3a358.pngddd810c8fed4f6f8060b6868fc181bed.png2506025d4098a215e191d7f602244809.png58fbe2f59a42853a76412edb440a8550.gif点击屏末  | 了解更多关于用 Kotlin 进行 Android 开发的相关资料

9b22a18f1a7fdf1294c9a0fba6ebc515.png

025af9a16e6ce59c2ab9e642c964d180.gif

642e5a84733dbafead127ab11e7d5b9c.png

http://www.lbrq.cn/news/2801629.html

相关文章:

  • 做网站能不能赚钱竞价推广代运营企业
  • 做外贸重新设计网站如何seo网站推广
  • 行业网站定位企业网络营销推广案例
  • 书法网站优化关键词关键词优化策略
  • 网站建设培训深圳seo关键词排名优化方法
  • 陕西建设部网站官网广州推广优化
  • 自己做网站要买服务器吗阿里巴巴官网首页
  • 石油网页设计与网站建设脑白金网络营销
  • 网站设计排名网站成都专业的整站优化
  • 苏州行业网站建设费用网上接单平台有哪些
  • 帮人做网站推选的公司百度推广平台登录网址
  • 深圳北网站建设线上销售水果营销方案
  • 广州高端品牌网站建设后台管理便捷手机百度一下
  • 北京网站建设公司飞沐seo排名优化
  • wordpress前端页面模板seogw
  • 杭州响应式建站价格河南郑州网站推广优化
  • 无锡网站建设兼职宁波seo优化外包公司
  • 网站建设项目内容品牌网站建设公司
  • 建设摩托车官方网沈阳企业网站seo公司
  • 石家庄做标书的网站seo网站推广案例
  • 做购物网站的数据库深圳网站优化
  • 移动的网络网站建设江门seo推广公司
  • 北京城乡和住房建设部网站手机网站建设价格
  • 做草莓的网站公司网站搭建
  • 怎么做ppt教程网站品牌整合营销
  • 网站用香港的空间速度怎么样最好的bt种子搜索引擎
  • 做电影售票网站的难点发帖推广百度首页
  • 长沙专业网站建设公司淘宝搜索指数
  • 网站工具查询推荐6个免费国外自媒体平台
  • 学校网站群建设思路百度知道合伙人
  • 在互联网大厂的Java面试:谢飞机的搞笑历险记
  • KB5063878补丁故障解决方案:从蓝屏幕到系统修复的全面指南
  • 【笔记】Facefusion3.3.2 之 NSFW 检测屏蔽测试
  • Android APP防止应用被动态调试
  • 如何使用Prometheus + Grafana + Loki构建一个现代化的云原生监控系统
  • 大语言模型研究进展