kotlin 语法糖

  1. Use of “when” Expression Instead of “switch”

    fun getDayOfWeek(day: Int): String {return when (day) {1 -> "Monday"2 -> "Tuesday"3 -> "Wednesday"4 -> "Thursday"5 -> "Friday"6 -> "Saturday"7 -> "Sunday"else -> "Invalid day"}
    }
    
  2. Lambda Expressions and Higher-Order Functions

    val numbers = listOf(1, 2, 3, 4, 5)
    val doubled = numbers.map { it * 2 }  // Lambda expression
    
  3. Destructuring Declarations

    data class Person(val name: String, val age: Int)
    val person = Person("Alice", 30)
    val (name, age) = person  // Destructuring declaration
    
  4. Elvis Operator

    val nullableString: String? = null
    val nonNullableString: String = nullableString ?: "Default Value"  // Elvis operator
    
  5. String Templates

    val greeting = "Hello, $name!"
    
  6. Smart Casts

    fun getStringLength(obj: Any): Int? {if (obj is String) {return obj.length  // Smart cast}return null
    }
    
  7. Single-Expression Functions

    fun square(x: Int) = x * x
    
  8. Default Parameter Values

    fun greet(name: String = "Guest") {println("Hello, $name!")
    }
    
  9. Extension Functions

    fun String.isPalindrome(): Boolean {return this == this.reversed()
    }val word = "madam"
    val isPalindrome = word.isPalindrome()
    
  10. Operator Overloading

    data class Point(val x: Int, val y: Int) {operator fun plus(other: Point) = Point(x + other.x, y + other.y)
    }val point1 = Point(2, 3)
    val point2 = Point(4, 5)
    val point3 = point1 + point2
    
  11. Printing All Results

    fun main() {println(getDayOfWeek(3))  // Output: Wednesdayprintln(doubled)  // Output: [2, 4, 6, 8, 10]println("Name: $name, Age: $age")  // Output: Name: Alice, Age: 30println(nonNullableString)  // Output: Default Valueprintln(greeting)  // Output: Hello, Alice!println(getStringLength("Kotlin"))  // Output: 6println(square(4))  // Output: 16greet()  // Output: Hello, Guest!println(isPalindrome)  // Output: trueprintln(point3)  // Output: Point(x=6, y=8)
    }main()
    

let

The let function is used to invoke a lambda function on the object it is called on. It returns the result of the lambda expression.

val result = "Hello".let {println(it)it.length
}
println(result) // Output: 5

also

The also function is similar to let, but it returns the original object instead of the result of the lambda expression. It’s often used for side effects, such as logging or validation.

val result = "Hello".also {println(it)
}.toUpperCase()
println(result) // Output: HELLO

run

The run function is used to execute a block of code and return its result. It can be called on an object and within a scope.

val result = "Hello".run {println(this)this.length
}
println(result) // Output: 5

with

The with function is a non-extension function that can be used to call multiple methods on the same object without repeating the object’s name.

val result = with("Hello") {println(this)this.length
}
println(result) // Output: 5

apply

The apply function is used for configuring an object. It runs a block of code on the object and returns the object itself.

val result = StringBuilder().apply {append("Hello")append(" World")
}
println(result.toString()) // Output: Hello World

takeIf

The takeIf function returns the object if it satisfies the given predicate; otherwise, it returns null.

val result = "Hello".takeIf {it.length > 3
}
println(result) // Output: Hello

takeUnless

The takeUnless function returns the object if it does not satisfy the given predicate; otherwise, it returns null.

val result = "Hello".takeUnless {it.length > 5
}
println(result) // Output: Hello

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

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

相关文章

C++中的结构体——结构体中const的使用场景

作用:用const来防止误操作 示例 运行结果

2024酒店IPTV云桌面系统建设方案

Hello大家好,我是点量小芹,这一年多的时间一直在分享实时云渲染像素流相关的内容,今天和大家聊聊酒店IPTV云桌面电视系统解决方案,或者有的朋友也会称之为IPTV服务器。熟悉小芹的朋友知道,IPTV软件系统是我们一直在推的…

MySQL之高级特性(三)

高级特性 分布式(XA)事务 存储引擎的事务特性能够保证在存储引擎级别实现ACID,而分布式事务则让存储引擎级别的ACID可以扩展到数据库层面,甚至可以扩展到多个数据库之间——这需要通过两阶段提交实现。MySQL5.0和更新版本的数据库已经开始支持XA事务了。XA事务中需…

架构设计 - nginx 的核心机制与主要应用场景

一、nginx 的核心机制: 1. 事件驱动模型(epoll 多路复用) 事件循环: Nginx的核心组件是一个事件循环,它不断地监听事件(如新连接的到来、请求数据的可读性等)。 当有事件发生时,事…

构建LangChain应用程序的示例代码:32、如何为任何工具添加人工验证教程

本演示展示了如何为任何工具添加人工验证。我们将使用HumanApprovalCallbackHandler来实现这一功能。 假设我们需要使用ShellTool。将此工具添加到自动化流程中存在明显的风险。让我们看看如何强制人工手动批准输入到此工具的输入。 注意:我们通常建议不要使用She…

软设之需求分析的工具

1.应用的工具 数据流图 数据字典 判定表 判定树 2.数据流图基本概念 数据流:由一组固定成分的数据组成,表示数据的流向。每个数据流通常有一个合适的名词,反映数据流的含义 加工:加工描述了输入数据流到输出数据流之间的变换,也就是输…

道可云元宇宙每日资讯|上海科委:围绕元宇宙布局全产业链技术

道可云元宇宙每日简报(2024年6月13日)讯,今日元宇宙新鲜事有: 上海科委:围绕元宇宙布局全产业链技术 6月12日,上海市科学技术委员会印发《上海市颠覆性技术创新项目管理暂行办法》,其中提出&a…

放弃Venn-Upset-花瓣图,拥抱二分网络

写在前面 让点随机排布在一个区域,保证点之间不重叠,并且将点的图层放到最上层,保证节点最清晰,然后边可以进行透明化,更加突出节点的位置。这里我新构建了布局函数 PolyRdmNotdCirG 来做这个随机排布。调用的是packcircles包的算…

商家转账到零钱最全面攻略:申请、使用、注意事项等详解

一、微信商家转账到零钱功能概述 微信支付作为国内最大社交软件的增值服务,在商业活动中广泛使用。其开发的营销功能“商家转账到零钱”则允许商家直接将资金转入用户的微信钱包,操作简便快捷。本文将详细探讨此功能的使用条件、操作步骤以及解答一些常…

深入理解java设计模式之单例模式

目录 概述单例模式是什么单例模式的使用场景单例模式的优缺点单例模式的几种实现方式饿汉式懒汉式双重检查锁定机制静态内部类枚举使用容器几种可能破坏单例类的方法多线程环境下的竞争条件使用反射机制使用序列化多个类加载器概述 单例模式是什么 定义:单例模式确保一个类在…

Java中Transactional在不同方法间的穿透性,rollbackFor参数含义

哈喽,大家好,我是木头左! 在Java开发中,经常会遇到需要在一个事务中执行多个操作的场景。为了确保这些操作的原子性,可以使用Spring框架提供的Transactional注解来实现事务管理。然而,在实际开发过程中&…

LeetCode刷题之HOT100之验证二叉搜索树

1、题目描述 2、逻辑分析 要求给定的根节点是否是有效的二叉树。有效的二叉搜索树定义如上。那么如何求解呢?题解给出了两张求解方法:递归、中序遍历。这边倾向于中序遍历,中序遍历后的二叉树是升序排序的,以这个性质即可解题。 …

Prometheus——部署详解

目录 一、Prometheus Server端安装和相关配置 1.上传安装包并解压 2.配置系统启动文件 3.启动 二、部署Node Exporters监控系统指标 三、监控Mysql配置示例 1.Mysql服务器操作 2.Prometheus服务器操作 四、监控Nginx配置示例 1.在Nginx服务器操作 2.Prometheus服务器…

HTML列表和表格标签

目录 1.列表标签 1.1无序列表 1.2有序列表 1.3定义列表 2. 表格标签、 2.1表格标签的属性 2.2合并单元格 1.列表标签 1.1无序列表 <ul>: [type 属性&#xff1a; disc( 实心圆点 )( 默认 ) 、 circle( 空心圆圈 ) 、 square( 实心方块 )] <li>: 列表中…

vue+java实现简易AI问答组件(基于百度文心大模型)

一、需求 公司想要在页面中加入AI智能对话功能&#xff0c;故查找免费gpt接口&#xff0c;最终决定百度千帆大模型&#xff08;进入官网、官方文档中心&#xff09;&#xff1b; 二、主要功能列举 AI智能对话&#xff1b;记录上下文回答环境&#xff1b;折叠/展开窗口&#…

用Qt 中的QPainter类画时钟

在Qt中&#xff0c;我们可以通过QPainter类来绘制各种图形&#xff0c;包括时钟指针。以下是一个简单的例子&#xff0c;展示了如何在Qt中绘制一个简单的时钟指针。 #include <QPainter> #include <QWidget> #include <QTimer> #include <QTime>class…

管道(channel)select

select功能&#xff1a;解决多个管道的选择问题&#xff0c;也可以叫多路复用&#xff0c;可以从多个管道中随机公平的选择一个来执行 case后面必须进行的是io操作&#xff0c;不能是等值&#xff0c;随机去选择一个io操作 default防止select被阻塞&#xff0c;加入default 只…

使用MATLAB对地铁站、公交站等求解最短路径

使用MATLAB对城市的地铁站、公交站等站点&#xff0c;根据站点的经纬度坐标和彼此之间的权重&#xff0c;求解其最短路径、途径站点和路程 已知的数据如图&#xff0c;是西安市地铁站点的数据&#xff0c;保存在一个Excel里 如图&#xff0c;每列的内容都在上面&#xff0c;不…

滚动条样式

/*滚动条*/ //滚动条没有滑块的轨道部分. ::-webkit-scrollbar-track-piece {background: #fff;border-radius: 0px;opacity: 1;border: 1px solid #D9D9D9; } //整个滚动条 ::-webkit-scrollbar {width: 8px;height: 8px;background-color: transparent; } //滚动条上的滚动滑…

经常加班却不给加班费,我又不想离开这个单位,该怎么办?

经常加班却不给加班费&#xff0c;我又不想离开这个单位&#xff0c;该怎么办&#xff1f; --#李秘书讲写作#教你如何在维护权益与保持工作稳定间找到平衡&#xff1f; 在现代社会中&#xff0c;加班已经成为许多职场人士的常态。你也许也不例外&#xff0c;每天都在忙碌的工作…