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

Kotlin中的函数分类(顶层、成员、局部、递归等)

在 Kotlin 中,函数可以按照不同的方式进行分类。在本篇博客中,我们将介绍以下几种常见的函数分类,并提供示例代码进行演示。

  1. 顶层函数:

顶层函数是指定义在文件中的函数,不依赖于任何类或对象。它们可以在文件的任何位置被调用。示例代码如下:

fun total(a: Int) {var b: Int = 5// 局部函数fun add(): Int {return a + b}println(add()) // 8
}
  1. 局部函数:

局部函数是定义在另一个函数内部的函数。它们只能在所在函数内部被访问和调用。示例代码如上述顶层函数中的 add 函数。

  1. 递归函数:

递归函数是指在函数体内部调用函数本身的函数。递归函数通过不断调用自身来解决问题,直到达到基本情况。示例代码如下:

fun sum(num: Int): Int {if (num == 1) {return 1} else {return num + sum(num - 1)}
}
  1. 尾递归函数:

尾递归函数是一种特殊的递归函数,其调用出现在函数的末尾。尾递归函数可以通过使用 tailrec 修饰符来标识,在编译时将其优化为循环结构,避免堆栈溢出。示例代码如下:

tailrec fun sum2(num: Int, total: Int = 0): Int {if (num == 1) {return 1 + total} else {return sum2(num - 1, num + total)}
}
  1. 函数重载:

函数重载是指在同一个作用域内定义多个同名函数,但参数个数或参数类型不同。函数重载与函数的返回值类型无关。示例代码如下:

fun totalNum(num: Int): Int {if (num == 1) {return 1} else {return num + totalNum(num - 1)}
}fun totalNum(num: Float): Float {if (num == 1F) {return 1F} else {return num + totalNum(num - 1F)}
}
  1. 成员函数:

成员函数是定义在类内部的函数,它们属于类的实例,需要通过对象来调用。示例代码如下:

class Person {// 成员函数fun hello() {println("hello")}
}

以上就是 Kotlin 函数的分类和示例代码。通过不同类型的函数,我们可以实现各种功能和逻辑,并使代码更加模块化和可重用。

希望本篇博客对你有所帮助!

相关文章:

Kotlin中的函数分类(顶层、成员、局部、递归等)

在 Kotlin 中,函数可以按照不同的方式进行分类。在本篇博客中,我们将介绍以下几种常见的函数分类,并提供示例代码进行演示。 顶层函数: 顶层函数是指定义在文件中的函数,不依赖于任何类或对象。它们可以在文件的任何…...

字符串排序程序

字符串排序程序,对一个字符串中的数值进行从小到大的排序 例如排序前给定的字符串为" 20 78 9 -7 88 36 29" 排序后: -7 9 20 29 36 78 88 要求使用包装类对数值类型的字符串转换成整型进行排序。 public class StringSort {public static vo…...

功率放大器在材料测试中的应用有哪些

功率放大器在材料测试中有广泛的应用,尤其在材料的物理、电子和热学性质等方面的研究中起到了重要的作用。下面Aigtek安泰将详细介绍功率放大器在材料测试中的一些主要应用。 电学特性测试:功率放大器用于材料的电学特性测试,如电导率、介电常…...

汽车屏类产品(一):流媒体后视镜Camera Monitoring System (CMS)

前言: CMS,有叫电子侧视镜,虚拟倒车镜,电子倒车镜, 电子取代镜等,ISO 国际标准组织称其为摄像头监控系统。电子后视镜由“摄像头+屏幕”组成,汽车外后视镜经历了光学镜面从平面镜到曲面镜的迭代进步,CMS也实现从商用车到乘用车的过渡。显示模式为外部摄像头采集图像,…...

三元组(C++ 实现矩阵快速转置)

三元组稀疏矩阵是一种高效存储稀疏矩阵的方法。它通过记录矩阵中非零元素的行、列和值来表示一个稀疏矩阵。我们在三元组里存储的是每个元素的行、列以及值。 题目: 任意输入一个稀疏矩阵M,用三元组顺序表压缩存储该稀疏矩阵M,然后求其转置矩…...

Apriori(关联规则挖掘算法)

关联规则分析 事务库 上表所示的购物篮数据即是一个事务库,该事务库记录的是用户行为的数据。 事务 上表事务库中的每一条记录被称为一笔事务。在购物篮事务中,每一次购物行为即为一笔事务,例如第一行数据“用户1购买商品A,B,C”即为一条事…...

new Object()到底占用几个字节

Java内存模型 对象内存中可以分为三块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding),以64位操作系统为例(未开启指针压缩的情况)Java对象布局 如下图所示: 其中对象头中的Mark Word中的详细信息在文章synchr…...

瞬态抑制二极管TVS的工作原理?|深圳比创达电子EMC(上)

TVS二极管具有响应速度快、漏电流小、钳位电压稳以及无寿命衰减的特性,从小到信号线静电防护,大到电力系统抗雷击浪涌,TVS都发挥着至关重要的作用。本章对瞬态抑制二极管TVS工作机理展开分析,供产品选型参考。接下来就跟着深圳比创…...

Nginx 同一端口 同时支持http与https 协议

文章目录 需求分析 需求 通过 nginx ,让同一端口 同时支持http与https 协议 分析 通过使用 Nginx,可以实现同一端口同时支持 HTTP 和 HTTPS 协议。下面是一种可能的配置方式: 配置 HTTP 服务 在 Nginx 配置文件中,添加以下配置…...

【Express】文件上传管理 multer 中间件

Multer是Node.js中用于处理文件上传的中间件。它可以帮助你处理文件上传的相关逻辑,如接收和保存上传的文件、限制文件大小、设置文件类型限制等。只能用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。 下面是使用Multer中间件的基本…...

性能监控软件是什么?有哪些优势?

在现代科技驱动的世界中,计算机系统的性能对于企业和个人用户都至关重要。性能监控软件是一种不可或缺的工具,可以帮助我们实时跟踪、分析和优化系统的性能。本文将介绍性能监控软件的概念、其重要性以及如何选择和使用这些工具来提高系统效率。 一、性能…...

分布式事务及CAP和BASE顶底

一、分布式事务 单体应用肯定就不存在分布式事务了,只有在分布式微服务系统中,各个服务之间通过RPC调用后,每个微服务有自己和数据库的连接,各个微服务的回滚不影响其他的微服务事务,这几必须使用分布式事务来解决分布…...

Django REST Framework完整教程-认证与权限-JWT的使用

文章目录 1.认证(Authentication)与权限(Permission)1.1.视图添加权限1.2.登录验证1.3.常用DRF自带权限类1.4.自定义权限类1.5.全局权限1.6.函数视图权限 2.认证详解2.1.认证方案2.2.如何使用TokenAuthentication? 3.JSON Web Token(JWT)认证3.1.工作原理3.2.安装3.…...

领域内容第18名

恭喜入榜...

[1024]程序员节 一晃6年过去了

加入开发者大军,一晃已是6年有余,从最初的Andoird开发如火如荼,到现在的秋风萧瑟,宛如被秋风吹得只剩躯干的树木,等待来年的焕发新芽。 我本不是一个科班出身的开发者,但是为了生活,说白了为了钱…...

数据结构 | 构造哈夫曼树

template<class T> void Heap<T>::PercolateUp() //为了向上调整为堆&#xff0c;我们需要比较当前节点和其父节点的值&#xff0c;如果父节点的值比当前节点大&#xff0c;则交换它们的值。 { int p size - 1, c (p - 1) / 2;//c表示当前节点的父节点&#xff0…...

实验室烧杯可以用超声波清洗机吗

实验室烧杯可以用超声波清洗机吗&#xff1f;答案是可以的&#xff01;超声波清洗机不仅可以清洗实验烧杯&#xff0c;还可以用于清洗实验室中的试管、培养皿、移液管、载玻片、容量瓶、锥形瓶等各类实验器皿。在实验中&#xff0c;如果烧杯清洁不到位&#xff0c;会使得实验数…...

Unity之ShaderGraph如何实现UV抖动

前言 今天我们通过噪波图来实现一个UV抖动的效果。 如下图所示&#xff1a; 关键节点 Time&#xff1a;提供对着色器中各种时间参数的访问 UV&#xff1a;提供对网格顶点或片段的UV坐标的访问。可以使用通道下拉参数选择输出值的坐标通道。 SimpleNoise&#xff1a;根据…...

#力扣:771. 宝石与石头@FDDLC

771. 宝石与石头 - 力扣&#xff08;LeetCode&#xff09; 一、Java class Solution {public int numJewelsInStones(String jewels, String stones) {int[] isJewel new int[z 1];for (int i jewels.length() - 1; i > 0; i--) isJewel[jewels.charAt(i)] 1;int cnt …...

【网络协议】聊聊拓扑网络结构与原理

拓扑结构 上一篇我们简单讲述了一种交换机的情况&#xff0c;但是实际的场景是比较复杂的&#xff0c;在一个楼层可能有几十或者上百个接口&#xff0c;那么当知道对方的IP地址&#xff0c;求对方的MAC地址&#xff0c;其实是通过ARP协议进行处理的。 上图是一个两个交换机的…...

Web应用后端智能升级:Phi-4-mini-reasoning作为Node.js服务的推理模块

Web应用后端智能升级&#xff1a;Phi-4-mini-reasoning作为Node.js服务的推理模块 1. 为什么需要智能推理模块 现代Web应用面临一个共同挑战&#xff1a;用户期望越来越智能的交互体验。当用户在电商平台输入"适合夏天穿的轻薄外套"时&#xff0c;系统需要理解这包…...

USART串口通信

一、串口 USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff0c;通用同步 / 异步收发器&#xff09; 是一种全双工、串行、逐位传输的通信接口&#xff0c;核心是把单片机 / 处理器的并行数据转为串行数据发送&#xff0c;或把串行数据…...

Fish Speech 1.5语音克隆5分钟快速部署:零基础小白也能玩转AI配音

Fish Speech 1.5语音克隆5分钟快速部署&#xff1a;零基础小白也能玩转AI配音 1. 认识Fish Speech 1.5语音克隆技术 Fish Speech 1.5是当前最易上手的开源语音克隆工具之一。想象一下&#xff0c;你只需要录制10秒钟的语音样本&#xff0c;就能让AI用你的声音朗读任何文本——…...

【ProtoBuf 实战训练】网络版通讯录

文章目录1. 通讯录 4.0 实现&#xff08;网络版&#xff09;2. 环境搭建2.1 搭建服务端2.2 搭建客户端2.3 运行结果3. 新增联系人功能3.1 协议约定3.2 协议接口定义 (.proto)3.2.1 AddContactRequest&#xff08;请求消息&#xff09;3.2.2 AddContactResponse&#xff08;响应…...

Alibaba DASD-4B Thinking 对话工具入门:Anaconda虚拟环境配置与模型调用

Alibaba DASD-4B Thinking 对话工具入门&#xff1a;Anaconda虚拟环境配置与模型调用 想试试最新的对话模型&#xff0c;但被复杂的依赖和版本冲突搞得头大&#xff1f;这感觉我太懂了。很多朋友在接触像Alibaba DASD-4B这类大模型时&#xff0c;第一步就卡在了环境配置上&…...

STM32+OneNET 智能家居项目踩坑全记录:数据不显示、更新慢、步长校验全解析

一、OneNET 数据更新极慢&#xff0c;2 分钟才刷新一次 问题现象 代码里设置的是timeCount>200&#xff08;约 5 秒&#xff09;发送一次数据&#xff0c;结果 OneNET 平台要 2 分钟才更新一次&#xff0c;完全不实时。 根因分析 主循环耗时严重&#xff01;原本以为 5 …...

Graphormer多任务预测指南:property-guided与catalyst-adsorption双模式切换详解

Graphormer多任务预测指南&#xff1a;property-guided与catalyst-adsorption双模式切换详解 1. Graphormer模型概述 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。这个创…...

Hunyuan-MT-7B部署教程:像素语言传送门在阿里云ACK集群中实现高可用服务编排

Hunyuan-MT-7B部署教程&#xff1a;像素语言传送门在阿里云ACK集群中实现高可用服务编排 1. 项目概述 像素语言跨维传送门(Pixel Language Portal)是基于腾讯Hunyuan-MT-7B大模型构建的创新翻译工具。与传统翻译软件不同&#xff0c;它将语言转换过程设计为16-bit像素冒险体验…...

霜儿-汉服-造相Z-Turbo科研辅助:使用LaTeX撰写包含AI生成图像的学术论文

霜儿-汉服-造相Z-Turbo科研辅助&#xff1a;使用LaTeX撰写包含AI生成图像的学术论文 最近在帮一位研究传统服饰的朋友整理论文&#xff0c;遇到了一个挺有意思的问题。他们需要大量汉服的结构示意图和纹样分析图&#xff0c;但手绘耗时&#xff0c;找现成资料又很难完全匹配研…...

OpenClaw调试技巧:解决SecGPT-14B模型返回结果异常问题

OpenClaw调试技巧&#xff1a;解决SecGPT-14B模型返回结果异常问题 1. 问题背景与现象描述 上周在尝试用OpenClaw对接SecGPT-14B模型时&#xff0c;遇到了一个棘手的问题&#xff1a;模型返回的结果经常出现截断或格式混乱。具体表现为&#xff1a; 当请求生成网络安全报告时…...