【kotlin】Kotlin学习:run、with、apply、also、let的区别

背景

最近的项目采用Kt编写的,回顾一下kotlin的知识点。
其中和java最特别的几个使用是需要重点学习回顾的:let,run,with,apply,also等等。

回顾

在这里插入图片描述

重点就是上图所描述的,其中的差别主要是 参考

代码

  • let
// 判断中文环境 - it的方式
  protected fun isChinese():Boolean
    {
        mLocale?.let {
            if(it != Locale.CHINA && it != Locale.CHINESE)
            {
                return false
            }
        }
        return true
    }
  • apply
// 返回this 即本对象
 dialog?.apply {
            setCanceledOnTouchOutside(canceledOnTouchOutside())
            setCancelable(cancelable())
        }
  • run
//返回的 this 对象
 mListener?.run {
            ivMic.setOnClickListener {
                this.onMicClick(classUser)
            }
            ivCamera.setOnClickListener {
                this.onCameraClick(classUser)
            }
            ivShare.setOnClickListener {
                this.onShareClick(classUser)
            }
        }
  • with
//包裹该对象,调用该对象的方法
with(container) {
            setChildCountChangedListener { count: Int ->
                if (count == 0) {
                    main_top_whiteboard_name.visibility = View.GONE
                    main_top_page_layout.visibility = View.GONE
                    main_top_sheet_name.visibility = View.GONE
                    main_step_layout.visibility = View.GONE
                    main_top_layout.setBackgroundColor(Color.parseColor("#f4f5f8"))
                    currentHolder = null
                } else {
                    main_top_layout.setBackgroundColor(Color.TRANSPARENT)
                }
            }

            setWhiteboardSelectListener {
                Logger.i(TAG, "container onWhiteboardSelectListener,${it}")
                val holder = container.getWhiteboardViewHolder(it)!!
                onWhiteboardHolderSelected(holder)
                updatePreviewRelations()
                updateToolsVisibility()
            }
            setWhiteboardScrollListener { currentPage: Int, pageCount: Int ->
                Logger.i(
                    TAG,
                    "setWhiteboardScrollListener(),currentPage:${currentPage},pageCount:${pageCount}, ${currentHolder?.getCurrentPage()}"
                )
                main_page_index.text = "%s/%s".format(currentPage.toString(), pageCount.toString())
                docs_preview_list.setSelectedPage(currentPage - 1)
            }
            setWhiteboardClickedListener {
                val isVisible = layout_top_bar.visibility == View.VISIBLE
                layout_top_bar.visibility = if (isVisible) View.GONE else View.VISIBLE
                if (!isVisible) {
                    handler.removeCallbacks(hideTopBarRunnable)
                    handler.postDelayed(hideTopBarRunnable, 5000)
                }
            }
        }
  • also
// it 对象,
 val selectRolePopWindow =
                SelectRolePopWindow(this, join_role.text.toString())
                    .also {
                        it.setOnConfirmClickListener { str ->
                            join_role.text = str
                        }

官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值