Kotlin 开发Android app(七)上:Kotlin函数fun

news2024/9/23 15:25:49

对于函数来说,现在的语言越来越想把它往变量上靠。

确实对于函数来说,他应该有很多变量的特性。

在这里插入图片描述

Kotlin 中,定义函数是很简单的一件事情,我觉得编程有的时候是被一些语言给高复杂了,命名很简单的一些事情,还引入了很多的概念,其实这些对项目的开发一点用处都没有,只是一些编程技巧罢了,就这个工程的可读性和稳定性一点用处也没有。

函数声明

函数的关键字为 fun,其实一些比较新的语言在取这些关键字的时候,我建议还是有个一致性的规范,看多语言以后,你会发现有的语言命名函数是用fun,有的是使用func,其实这些关键字对功能的实现一点影响都没有,不同的语言取不同的关键字,只是给编程使用者,添加了更多的负担。

fun myAdd(a:Int,b:Int):Int{
        return a+b
    }

这样我们就添加了一个函数名为:myAdd,两个变量,a和b,返回值为Int。为何Kotlin的返回值是在后面呢?

其实Kotlin这样设计还是有一定的道理的,他让函数和变量长得一样,函数的类型就是他的返回类型,这样跟变量一起来记忆,通用性还是很强的。

函数默认参数

有些语言,是没有提供默认参数的,Kotlin有提供,用了默认参数的函数,用起来还是挺舒服的,比如你在读别人的api的时候,你可以不需要把所有的参数 都读懂,默认就可以了。

fun isA(v:Char,ignorecase:Boolean=true):Boolean{
        var c:Char = '1'
        if (ignorecase)
            c = v.lowercaseChar()
        return c == 'a'

    }

如果你有多个的默认参数的话,可以用指定名字的方式来对默认变量进行赋值,而不用太多的考虑参数顺序的问题。

var ba:Boolean = isA('A', ignorecase = false)

可变参数

Kotlin对参数的支持,还是给了很多的空间,可变参数来说,平常是比较少见,但有一个你肯定是用过的,那就是打印日志的时候。

fun myLog(vararg args: String) {
        println(args::class)
        println(args.contentToString())
        for (i in args.indices) {
            println(args[i])
        }
    }

我们可以这样来调用:

myLog("1","2","3")

Kotlin 可变参数,可以理解为变量是一个数组或者是一个链表,这样是最好理解的,也应该本来就是这样。

小结

函数在编程中,不可能不被用到的,他是我们程序的复用的基础,在这节中,我们也讨论了一些语言的设计问题,一个好的语言,他需要足够的简单,有一定的通用性,这样对于编程者,那才是真正的有好。

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

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

相关文章

matlab绘图

clear a-2:0.1:2; b-3:0.1:3; [x,y]meshgrid(a,b); z(1-(x.2)/4-(y.2)/9).^(1/2); mesh(x,y,z) hold on mesh(x,y,-z) clear a-1:0.1:1; b-2:0.1:2; [x,y]meshgrid(a,b); z(4/9)*(x.2)(y.2); mesh(x,y,z)

运维监控系统 PIGOSS BSM 拓扑自动发现原理

PIGOSS BSM提供了自动发现拓扑功能,能够发现全网拓扑、指定网段拓扑、路由拓扑,能够自动关联系统已经监控的设备的状态在拓扑图上实时显示。在做全网发现的时候,可以指定网段或起始路由器,并设定全网的snmp配置参数后,…

vue 使用webpack打包,出现路径404 ,导致白屏webpack-bundle-analyzer使用

使用webpack打包时,遇到两个问题,导致页面出现白屏 一个是cdn对于静态文件限制大小,不能大于2MB,超过这个大小后,就不能上传cdn成功,导致页面加载时,长时间白屏,且找不到资源&#x…

INTERSPEECH 2022|FS-CANet: 基于全带子带交叉注意力机制的语音增强

INTERSPEECH 2022 FS-CANet: 基于全带子带交叉注意力机制的语音增强 本文由清华大学与腾讯天籁实验室、香港中文大学合作,提出了一个全带-子带交叉注意力(FSCA)模块来交互融合全局信息和局部信息,并将其应用于FullSubNet&#…

Dubbo源码(十) 与Spring一起学习Dubbo里的Aware

目录 一、Spring 1.BeanNameAware 2. BeanClassLoaderAware 3. ApplicationContextAware 4. EnvironmentAware 5. ApplicationEventPublisherAware 6. aware注入时机 二、Dubbo 1. ExtensionAccessorAware 三、小结 现在很多同行做java开发几年了,被迫停留…

[附源码]java毕业设计竞价拍卖系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

灵雀云ACP 斩获“2022金边奖-最佳云原生边缘云平台”

近日,由边缘计算社区主办的全球边缘计算大会上海站成功召开,灵雀云凭借出色的全栈云原生技术实力、专业的高品质服务以及在边缘云场景的丰富落地实践,斩获“2022金边奖-最佳云原生边缘云平台”奖项。 “十四五”规划中明确指出要“协同发展云…

使用kubeadm部署kubernetes集群

文章目录环境环境初始化配置hosts配置时钟同步禁用firewalld、selinux、postfix禁用swap分区开启IP转发、修改内核信息配置IPVS安装Docker配置yum源安装docker-ce配置镜像加速器安装kubernetes组件配置yum源安装kubeadm、kubelet、kubectl工具配置containerd部署master安装pod网…

UTF-8、Unicode编码与汉字的相关内容

介绍 UTF-8是Unicode的一种实现方式,比如一个汉字用Unicode编码表示是两个字节,而用UTF8编码表示则为3个字节。 之所以写这篇文章,是因为我的webserver程序中,浏览器发送资源请求且该资源名为中文时出现了编码问题。 UTF8编码 U…

【SQL 中级语法 2】自连接的用法

SQL的连接运算根据其特征的不同,有着不同的名称,如内连接、外连接、交叉连接等。一般来说,这些连接大都是以不同的表或视图为对象进行的,但针对相同的表或相同的视图的连接也并没有被禁止。针对相同的表进行的连接被称为“自连接”…

python之排序

目录1. 对一维array中的数值进行从大到小排序2. 将DataFrame的列逆序排列3. 根据字符串中的数字进行排序3.2 啊4. 列表参考资料1. 对一维array中的数值进行从大到小排序 import numpy as np a np.array([5,6,8,2,1,7,5,3,90,78,62,5,4,2,9,4]) # b a.sort(axis0,kindquickso…

抑制剂拮抗剂等小分子化合物

小分子化合物主要通过调节其蛋白靶点的活性发挥作用。目前小分子化合物的蛋白靶点主要包括酶、离子通道和受体三大类。根据靶点种类的不同,小分子化合物发挥着不同的作用。 1. 酶的抑制剂(enzyme inhibitor) 在所有的小分子化合物中&#xff…

【虹科案例】虹科脉冲发生器在半导体行业中的应用

非易失性存储单元特点 存储器研究的趋势是开发一种称为非易失性 RAM 的新型存储器,它将 RAM 的速度与大容量存储器的数据存储相结合。几年来有许多新单元类型的提议,例如 FeRAM(铁电存储器)、ReRAM(电阻式存储器&…

C++string类的模拟实现以及经验分享

文章目录1. 为什么学习string类?1.1 C语言中的字符串1.2 两个面试题2. string类的实现构造函数:拷贝构造函数赋值运算符重载:析构函数流提取运算符重载1. 为什么学习string类? 1.1 C语言中的字符串 C语言中,字符串是…

5款十分小众,却又非常好用的良心软件

今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。 1.杀毒软件——火绒安全软件 首先说一下国产杀软之光,这是一款电脑安全软件,病毒库更新及时,界面…

【文档+视频】Verdi基础教程

目录 前言 1.Verdi 环境配置 2.VCS 产生Verdi 波形 1、tb中加入相应的系统函数 2、makefile中加入相应的选项 3.nTrace 1、如何调用Verdi? 【重点】 2、如何查看包含的设计架构? 3、如何查寻模块实例化的位置?【重点】 4、在nTrace…

Linux网络编程11——简单的web服务器

学习视频链接 02-web大练习的概述_bilibili_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1iJ411S7UA/?p132&spm_id_frompageDriver&vd_source0471cde1c644648fafd07b54e303c905 目录 一、项目展示 二、HTTP 协议基础 2.1 HTTP协议基础。 2.2 请求消息(R…

个人博客系统

目录一、项目简介二、项目开发流程2.1 准备工作2.2 实现Vue层2.2 实现Model层2.4 实现Controller层一、项目简介 基于servlet,采用前后端分离的方式,实现个人博客系统,功能包括:登录、注销、编辑、删除博客、发布博客等. 二、项…

用了10年开源工具,换了Smartbi后,3分钟搞定一份报表

大约在20年前,中国企业开始应用国外BI软件,报表工具可以说是BI 1.0时代的代表产物。在BI软件盛行之初,大部分软件都有开源的,从系统到数据库到各类工具、应用,当时大部分企业使用的BI软件包括报表工具,也都…

外汇天眼:外汇占款是什么意思? 与外汇储备之间的差额是由哪些原因造成的?

外汇占款就是指受资国中央银行回收外汇财产而相对投放的本币。 因为人民币是是非非随意换取代币,外资企业导入后需换取成人民币才可以进到商品流通应用,国家以便外资企业兑换外币要投入很多的资产提升了贷币的需要量,产生了外汇占款。 外汇占…