kotlin中引用run函数的坑

Kotlin 中的 run 函数详解 阅读详情

如果我们用kt开发的肯定都是直接引用控件id对控件进行赋值及操作,最近我在做项目的时候发现运行报null

我很奇怪的看了下,居然是说控件不能为null,由于经常在kt中直接引用控件id,导致我从未想过去从控件方面找原因,加上我其他控件都是用得好好的,于是我就debug,log,查看各种地方都是没有问题的

 

 

其中的date_text就是我的控件id,我Log,debug了datePicker有数据,点击date_text也是直接跳进引用的页面,我又检测了activity引用的布局没问题,于是乎我又开始怀疑是不是我tun函数用得不对,但是无论我怎么调试都是报空!!!!!!!!

就在我差点放弃的时候,我突然想起java语言开发的时候在acitvity中弹出dialog,引用dialog控件会在控件前面加一个dialog,于是我在想我这里弹出一个dialog,然后直接引用的activity控件,是不是这里面有什么问题?(备注:正常情况是没问题的)。接着我就把date_text这个控件初始化了一下

 

​



接着我就运行后,果然解决问题了,也不再报错了。可是我又在想为什么会出现这种情况呐?这时候突然群友告诉我:

使用kotlinx.android引用控件id的时候,如果是在activity里面的dialog,fragment中使用run,apply函数里面,使用控件id,他调用的this即时dialog,fragment里面的,也就是说他会去dialog,fragment里面去找控件,而不是外面的activity。所以我们上面没有初始化控件的时候一直报控件不能为空.

 

 

 

 

 

 

 

 

 

Kotlin作用域函数:掌握apply/let/run/with/also精髓 Kotlin作用域函数综合指南 本文详细介绍了Kotlin中五种核心作用域函数(apply、let、also、run、with)的特性及适用场景。apply用于对象初始化配置,let处理空安全检查,also执行副作用操作,run混合调用成员和外部函数,with则是run的参数化变体。文章通过典型代码示例对比了各函数的接收者引用方式、返回值类型、null安全支持和作用域特点,并提供了最佳实践指南:对象配置首选apply,null安全处理用let,成员访问用run/with,链式副作用选also。掌握这些作用域 阅读详情

相关推荐

Kotlin 的标准函数 run,let,also,apply

Kotlin 里面的run,let,also,apply 就像图片中的木头铲子一样非常相似,有些时候我们不太清楚实战中应该使用哪一个标准函数,下面我们举一些例子来说明它们的区别。 开始 咱们先看run{} 标准函数最简单的一个用法: fun world() { var mood = "I am sad" run { val mood = "I am ...

陈铭卓的博客 1320

Activity中使用Dialog的方式

1.Activity中Dialog的使用方法         Activity提供了一套Dialog的管理机制,涉及到以下方法。 onCreateDialog: 创建dialog(需要重写) onPrepareDialog: 在创建dialog后的其他准备工作(需要重写) showDialog: 显示dialog(直接调用) dismissDialog: 取消dial

Jing 2414

Kotlin作用域函数--let、with、run、apply、also

我最近从朋友那里收集到了2020-2021BAT 面试真题解析Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等,可以很好地帮助大家深刻理解Android相关知识点的原理以及面试相关知识。这份资料把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~

m0_67392182的博客 1816

kotlin_作用域函数run{}

目前uwp版本oneNote对文本格式的支持不够全面 不过可以利用间接来实现目的:使用格式刷 就是借助行距较小的文本,通过格式刷(可以用快捷键ctrl+shift+c,来复制文本格式,荣国ctrl+shift+v来对被选中对的文本应用格式刷中保留的格式 使用场合:对于从web复制过来到oneNote的页面的行间距调节比较有用 通过十六进制设置背景颜色 这是一些文本! ...

xuchaoxin1375的博客 540

Android 面试必考 Kotlin 作用域函数,一文彻底分清不踩坑

Kotlin五大作用域函数(let、run、with、apply、also)是Android开发的核心工具,本文从源码、实战、面试三方面深度解析其区别与使用场景。核心区分维度:对象引用方式(this/it)和返回值类型(对象自身/Lambda结果)。实战场景:let处理可空数据转换,apply用于对象初始化,also附加日志埋点,run兼顾空安全与计算,with仅限确定非空对象。避坑指南:避免with空指针、滥用let嵌套、apply混杂业务逻辑。

郑伟强dev的专栏 54

Kotlin中let()with()run()apply()also()函数的使用方法与区别

在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码,今天为大家聊聊let,with,run,apply,also几个函数的用法与区别

kotlin特性之run

我们都知道链式编程,但今天所说的run就是应用于非链式的调用,非常适合用于给对象设置属性值,可以简化代码的编写。 以下举例说明: 不用run的情况: val makeText = Toast.makeText( this, R.string.correct_toast, Toast.LENGTH_SHORT ) makeText.setGravity(Gravity.TOP,getScreenWidth()/2,0) makeText.show() 在上面的情况下必须要定义

weixin_44727250的博客 2799

接上篇,记录一下【Unity 3D对博途PLCSIM的通讯】文章有点长~仔细看,很基础

本文参考链接:西门子PLC丨PROFINET通讯仿真(虚拟通讯)做了一些更详细的优化,本文使用的类库并非原作者使用的类库。 首先,昨天项目已经创建好了,这边也加了一个InputField和一个Button,可以实现简单的读取,ok开始。 放入准备好的通讯类库; 新建一个博途的项目,本次测试使用博途V15,测试环境为虚拟机,Unity运行在本地计算机,建立博途项目流程如下: 新建项目,右键项目-属性-保护-对勾,如图: 不得不说的是,仿真中加密的FB块是无法下载的哦~ 添加CPU...

NS_Speak(IVAV) 8060

Kotlin run 用法

【代码】Kotlin run 用法。

wolf0706的专栏 475

Windows环境下Elasticsearch与JDK版本兼容性实战指南

本文详细解析了Windows环境下Elasticsearch与JDK版本的兼容性问题,提供了从版本匹配检查到安装部署的完整实战指南。重点介绍了Elasticsearch 8.x需JDK 17+等关键版本对应关系,并分享多版本JDK共存方案及性能优化技巧,帮助开发者高效避坑。

weixin_29250403的博客 421

simulink调用C代码函数-C Caller模块

simulink中如何调用写好的C代码函数?使用C Caller模块调用C代码。

weixin_40531919的博客 5670

Kotlin系列之let、with、run、apply、also函数的使用

标签: Kotlin 常用技巧 目录: 一、回调函数的Kotin的lambda的简化 二、内联扩展函数之let 三、内联函数之with 四、内联扩展函数之run 五、内联扩展函数之apply 六、内联扩展函数之also 七、let,with,run,apply,also函数区别 简述: 相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说

Mikyou的专栏 23万+

人工智能混合编程实践:C++调用封装好的DLL进行异常检测推理

C++、Python、ONNX、人工智能、异常检测、Anomalib 2.1.0

FriendshipTang的博客 170

【Kotlin】标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )

一、apply 标准库函数、 二、let 标准库函数、 三、run 标准库函数、 1、run 函数传入 Lambda 表达式作为参数、 2、run 函数传入函数引用作为参数、 四、with 标准库函数、 五、also 标准库函数、 六、takeIf 标准库函数、 七、takeUnless 标准库函数、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2万+

4、基于球面波展开的近场/远场变换技术解析

本文深入解析了基于球面波展开的近场/远场变换技术,涵盖坐标系统选择、截断测量处理、高级SWE方法及实际应用场景。重点介绍了广义SWE、全探头补偿、平移SNF测量(TSWE)等关键技术,结合吸收材料与导电地板系统的误差处理方案,系统总结了各类方法的优缺点与适用场景,并通过流程图和案例分析展示了技术应用路径。该技术在汽车、通信和航空航天领域的天线测量中具有重要价值,可显著提升测量效率与精度。

dell8的博客 255

鱼鹰优化算法(OOA)详解:从猛禽捕食智能到优化算法实现

鱼鹰优化算法(Osprey Optimization Algorithm, OOA)是2023年提出的一种新型元启发式优化算法,灵感来源于鱼鹰(一种中型猛禽)高效的捕食策略。算法模拟了鱼鹰从空中识别水下鱼类位置并俯冲捕食,然后将捕获的鱼带至安全位置享用的全过程,以此抽象出全局探索和局部开发两个核心阶段。OOA算法具有参数少、结构简单、收敛速度快、全局寻优能力强等特点。自提出以来,已在函数优化、机器学习参数调优(如CatBoost模型)、路径规划等多个领域展现出良好性能,为解决复杂优化问题提供了新的有效工具。

qq_42212808的博客 273

Android kotlin run函数学习

继续来看一下kotlin中run函数的应用,首先看一下源码: /** * Calls the specified function [block] and returns its result. * * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run). */ @...

Bentley_li的博客 4484

Freeswitch DTMF 按键无法接收问题修复

freeswitch 在接收到 update后,会更新成新的 payload type,但是给的200响应,仍然是旧的,这时候就会导致手机侧认识需要发送旧的payload,所以发到 fs 后就会导致直接丢包,不去处理RTP包了。呼叫时需要设置通道变量 rtp_manual_rtp_bugs=ACCEPT_ANY_PAYLOAD ,这时候FS 就不会对包的payload进行判断,直接判定通过。应该修复 freeswitch 给响应时,应该根据收到的 payload 发送给手机,但是一直未找到正确的路径。

2301_81507069的博客 373

Android Kotlin之let、with、run、apply、also函数的使用

相比Java语言Kotlin更加简洁安全高效。不仅支持lambda表达式,还支持非空验证机制,另外提供一套源码标准库(Standard.kt)。但是,对于Kotlin的初学者来说,可能会经常写编写出不够优雅的代码,而Kotlin提供了一些内置函数便可以帮助优化代码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。这个源代码文件虽然一共不到50行代码,但是这些函数功能都非常强大。let函数实际上是一个作用域函数,当需要去定义一个变量在一个特定的作用域范围内时,就可以使用let函数。

csdn_aiyang的博客 3823

maya导入导出bvh 自动 脚本

maya打开bvh脚本

jacke121的专栏 1550

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Kotlin之let,apply,with,run函数区别

Kotlin之let,apply,with,run函数区别 重新整理 重新整理了各种函数的区别,请移步到这里。 以下作废 很长一段时间内都一直使用Kotlin这门语言,也只是纯粹使用简单语法,最近有时候写的代码,编辑器自动提示使用let等函数,然后就专门花点时间研究了下。 let 首先let()的定义是这样的,默认当前这个对象作为闭包的it参数,返回值是函数里面最后一行

流水不腐小夏 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Kotlin】标准库函数 ② ( run 标准库函数 | run 函数传入 Lambda 表达式作为参数 | run 函数传入函数引用作为参数 )

一、run 标准库函数 1、run 函数传入 Lambda 表达式作为参数 2、run 函数传入函数引用作为参数

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 860

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Kotlin-标准库函数run

本文介绍了Kotlin标准库中的run函数,该函数是Kotlin中一个强大的工具,通过扩展函数的方式允许在任何类型上执行一段代码块,并返回该代码块的执行结果。run函数的特点包括持有调用者对象作为this,以及返回lambda表达式的值。文中详细解释了run函数的定义、合约系统的作用,并通过多个示例展示了run函数的多种用法,包括直接传入lambda表达式、函数引用作为参数,以及链式调用等场景。

zyj13617的博客 791

Kotlin:常用标准库函数(let、run、with、apply、also)

一、let 扩展函数 Kotlin标准库函数let可用于范围确定和空检查。当调用对象时,let执行给定的代码块并返回其最后一个表达式的结果。对象可以通过引用(默认情况下)或自定义名称在块中访问 二、run 扩展函数 与let类似,run是标准库中的另一个作用域函数。基本上,它做同样的事情:执行一个代码块并返回其结果。 不同的是,在内部运行对象是通过this访问的。当您想要调用对象的方法而不是将其作为参数传递时,这是很有用的。

ChinaDragon10的博客 5179

Kotlin常用函数let、with、run、apply的用法和区别

在kotlin编程中let、with、run、apply这些函数使用率是非常高的,有时候可以通用,差别很小,但如果能记住他们的不同点,可以更加合理的选择使用。 在这之前首先要了解一下Lambda表达式,这会帮助你理解使用这些函数的时候有没有( )可不可以用it代替参数等。因为这些函数的最后一个参数都是lambda。 如何理解lambda呢?可以把lambda理解为就是一个函数,但这个函数比较特殊,...

有错望纠 5217

kotlin常见函数let,with,run,apply,also的使用

目录一、 let关键字的使用二、内联函数with三、内联扩展函数之run四、内联函数apply五、内联扩展函数之also六、let,with,run,apply,also函数区别 一、 let关键字的使用 let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范 围内,let函数的是一个不错的选择; let可以配合可空性 “?”来使用,如果data=null 则不执行le...

One X的博客 4789
上一篇: MeiWidgetView一款自定义控件集合库
下一篇: retrywhen实现重连(kotlin)
ZyClient
博客等级 码龄10年 29粉丝 60原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值