Kotlin中的also、apply、invoke用法详解

以下是 Kotlin 中作用域函数(letrunwithalsoapply)和 invoke 操作符的完整总结,结合代码示例和对比说明,帮助您理解它们的用法和区别。


一、作用域函数:简化对象操作

作用域函数用于在对象的上下文中执行代码块,并根据函数的不同返回对象本身或 lambda 的结果。以下是它们的核心区别:

1. let

  • 引用对象it(默认参数名,可自定义)
  • 返回值:lambda 表达式的结果
  • 典型场景:非空对象操作、链式处理
val name: String? = "Kotlin"
val length = name?.let { println("Name is $it")  // 输出: Name is Kotlinit.length              // 返回结果
}
println(length)  // 输出: 6

2. run

  • 两种形式
    • 扩展函数形式:使用 this 引用对象,返回 lambda 结果。
    • 上下文对象形式:直接调用,返回 lambda 结果。
  • 典型场景:对象配置并返回计算结果。
扩展函数形式
data class Config(var host: String = "", var po

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/78992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu实现远程文件传输

目录 安装 FileZillaUbuntu 配套设置实现文件传输 在Ubuntu系统中,实现远程文件传输的方法有多种,常见的包括使用SSH(Secure Shell)的SCP(Secure Copy Protocol)命令、SFTP(SSH File Transfer P…

TEC制冷片详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 三、程序设计 main文件 jdq.h文件 jdq.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 半导体制冷片(又称热电模块),是利用半导体材料的珀耳帖效应制造的一种新型制冷元件…

DotNet 入门:(一) 环境安装

一、前言 本想用 Go 语言实现一个通过小爱同学操作电脑的,比如我对着手机说打开音乐,或调小音乐,电脑能做相应的处理。奈何我一时间没看懂,就想着用.Net 来试一下,于是就有了下面这篇文章。 二、安装.Net 环境 1. 下…

人工智能数学基础(四):线性代数

线性代数是人工智能领域的核心数学工具之一,广泛应用于数据表示、模型训练和算法优化等多个环节。本文将系统梳理线性代数的关键知识点,并结合 Python 实例,助力读者轻松掌握这一重要学科。资源绑定附上完整资源供读者参考学习! …

Github 2025-04-26 Rust开源项目日报Top10

根据Github Trendings的统计,今日(2025-04-26统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Dart项目1RustDesk: 用Rust编写的开源远程桌面软件 创建周期:1218 天开发语言:Rust, Dart协议类型:GNU Affero General Public Li…

使用org.java_websocket库第三方库实现广播

可以使用org.java_websocket库来实现WebSocket服务器,并通过broadcast方法实现广播 java实现 import org.java_websocket.WebSocket; import org.java_websocket.handshake.ClientHandshake; import org.java_websocket.server.WebSocketServer; import java.net.…

【自然语言处理与大模型】LangChain大模型应用框架入门②

本文介绍LangChain的另一个重要组件——提示词模板(Prompt Template)组件,它主要用于将用户输入和参数转换为语言模型可理解的指令。有助于引导模型生成符合预期的响应,帮助其更好地理解上下文,从而输出相关且连贯的语…

单例设计模式之懒汉式以及线程安全问题

在单例设计模式中,懒汉式(Lazy Initialization) 通过延迟实例化来优化资源使用,但在多线程环境下存在线程安全问题。以下是其核心问题及解决方案的详细解析: 一、基础懒汉式代码(线程不安全) pu…

Windows7升级PowerShell到5.1

window7系统,安装了vs2019后,应用要用到PowerShell,Tool->Commond Line->Developer PowerShell时,提示版本需要3.0以上。还有编译新版本vcpkg(2021前的版本),脚本报错。所以需要升级下Pow…

区块链:去中心化应用(DApp)开发全流程解析

一、DApp的核心概念与特点 去中心化应用(DApp)是一种基于区块链技术的应用程序,其核心逻辑通过智能合约在链上执行,数据存储和交互均不依赖中心化服务器。相比传统应用,DApp具备以下特点: 去中心化&#x…

跟我学C++中级篇——控制死锁

一、同步和死锁 在前面学习多线程和网络编程时,都对线程中数据的同步和数据结构多线程访问的安全问题进行了分析和说明。其实,多线程编程之所以难,难点之一就在这里,数据同步意味着效率和安全的平衡,而这里的安全有一…

【matlab】绘制maxENT模型的ROC曲线和omission curve

文章目录 一、maxENT模型二、ROC曲线三、实操3.1 数据提取3.2 绘制ROC曲线3.3 绘制遗漏曲线3.4 多次训练的ROC和测试的ROC 一、maxENT模型 前面的文章已经详细讲过了。 maxENT软件运行后,会生成一个html报告,里面有ROC曲线,但我们往往需要自…

nginx 核心功能

目录 一、基于授权的访问控制 1. 使用 htpasswd 生成用户认证文件 2. 修改 Nginx 主配置文件 二、基于客户端的访问控制 三、Nginx 虚拟主机 1. 基于域名的虚拟主机 2. 基于 IP 的虚拟主机 3. 基于端口的虚拟主机 四、LNMP 架构部署及应用 1. 安装 MariaDB 2. 安装并…

mongoose插入文档,字段类型, 字段验证, 删除文档,更新文档,读取文档,查询文档的条件控制 ,字段筛选,数据排序,数据截取

、Mongoose 中与 文档操作(插入、查询、更新、删除)及其相关功能(字段类型、验证、条件筛选、排序、分页等)相关示例: 📋 一、字段类型定义(Schema Types) const mongoose require…

类和对象 (拷贝构造函数和运算符重载)上

类和对象 (拷贝构造函数和运算符重载)上 拷贝构造函数存在的原因及解决的 C 语言问题 1. 浅拷贝带来的问题 在 C 语言里,当对结构体或者数组进行拷贝操作时,执行的是浅拷贝。所谓浅拷贝,就是单纯地把一个对象的所有成员变量的值复制到另一…

Python深度挖掘:openpyxl和pandas的使用详细

文章目录 一、Excel处理在数据分析中的重要性二、openpyxl基础与核心功能2.1 openpyxl简介与安装2.2 工作簿与工作表的基本操作创建新工作簿打开已有工作簿工作表操作 2.3 单元格操作详解基本单元格操作批量操作单元格特殊单元格操作 2.4 样式与格式设置字体样式对齐方式边框设…

Android Q允许低内存启用系统弹窗

如果SYSTEM_ALERT_WINDOW权限可用,则返回true。 *从Q开始,在低ram手机上禁用SYSTEM_ALERT_WINDOW。 vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/Utils.java public static boolean isSystemAlertWindowEnabled(Co…

taro小程序如何实现大文件(视频、图片)后台下载功能?

一、需求背景 1、需要实现小程序下载最大500M视频 2、同时需支持图片下载 3、退到其他页面再次回到当前页面时,下载进度也需要展示 二、实现步骤 1、在app.ts文件定义一个全局变量globalDownLoadData 2、写一个独立的下载hooks,代码如下(…

BUUCTF——Online Tool

BUUCTF——Online Tool 进入靶场 <?phpif (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {$_SERVER[REMOTE_ADDR] $_SERVER[HTTP_X_FORWARDED_FOR]; }if(!isset($_GET[host])) {highlight_file(__FILE__); } else {$host $_GET[host];$host escapeshellarg($host);$host e…

《解锁CSS Flex布局:重塑现代网页布局的底层逻辑》

网页布局作为用户体验的基石&#xff0c;其重要性不言而喻。从早期简单的表格布局&#xff0c;到后来基于浮动与定位的复杂尝试&#xff0c;网页布局技术始终在不断演进。而CSS Flex布局的出现&#xff0c;宛如一颗璀璨的新星&#xff0c;彻底革新了网页布局的设计理念与实践方…