Kotlin基本语法1到函数

1.range表达式

fun main() {
    var age = 12.3
    if (age in 0.0..3.3){
       println("婴幼儿")
    }else if (age in 4.0..12.2){
        println("少儿")
    }else{
        println("未知")
    }


    /**
     * in 后面还可以接 list set 都可以
     */
    if (age !in 0.0..3.3){
        println("婴幼儿")
    }




}

2.when表达式


    val school = "小s学"
    val level = when (school) {
        "学前班" -> "幼儿"
        "小学" -> "少年"
        "中学" -> "青年"
        "高中" -> "学生"
        else -> {
            println("未知")
        }
    }
    println(level)

3.String模板

4.函数

fun main() {

    println(doSomething(1, true))


}

private fun doSomething(age:Int,flag:Boolean):String{

    return "result $age $flag"
}

5.Unit函数

7.Nothing类型

fun main() {

    println(doSomething(1, true))
    TODO("nothing")
    println("after nothing")



}

private fun doSomething(age:Int,flag:Boolean):String{

    return "result $age $flag"
}

8.反引号的函数命名

public class MyJava {
    public static void  is (){
        System.out.println("is invoked");
    }
    public  void  saa (){
        System.out.println("is invoked");
    }
}

 Kotlin 调用Java

fun main() {

    MyJava.`is`()
    MyJava().saa()
}
fun `**~special function with weird name~**`(){

}

9.匿名函数

fun main() {
    val total = "Mississippi".count()
    val total1 = "Mississippi".count { letter -> letter == 's' }
    println(total)
    println(total1)
}

10.函数参数

 

 

fun main() {

//    val blessingFunction:()->String={
//        "我很牛逼"
//    }
//
//    println(blessingFunction())



    val blessingFunction ={ name:String,year:Int ->
        val holiday = "New Year ."
        "$name, Happy $holiday $year"
    }

    println(blessingFunction("jack",3))
}

11.什么是lambda

12.定义参数是函数的函数

fun main() {

  val getDiscountWords ={goodsName:String,hours:Int ->
        val  currentYear =2027
      "${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"

  }

showOnBoard("卫生纸",getDiscountWords)


}


//具名函数
fun showOnBoard(goodsName:String,getDiscountWords:(String,Int) ->String){
    val hours:Int = (1..24).shuffled().last()
    println(getDiscountWords(goodsName,hours))
}

13.简略写法

fun main() {

  

showOnBoard1("卫生纸"){goodsName:String,hours:Int ->
    val  currentYear =2027
    "${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"

}
}


//具名函数
fun showOnBoard1(goodsName:String,getDiscountWords:(String,Int) ->String){
    val hours:Int = (1..24).shuffled().last()
    println(getDiscountWords(goodsName,hours))
}

 14.函数内联 inline 关键字

fun main() {


showOnBoard1("卫生纸"){goodsName:String,hours:Int ->
    val  currentYear =2027
    "${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"
}



}


//具名函数
inline fun showOnBoard1(goodsName:String,getDiscountWords:(String,Int) ->String){
    val hours:Int = (1..24).shuffled().last()
    println(getDiscountWords(goodsName,hours))
}

15.函数引用

fun main() {


showOnBoard2("牙膏",::getDiscountWords)


}

fun getDiscountWords(goodsName: String,hours:Int):String{
    val  currentYear =2027
    return "${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"
}

//具名函数
fun showOnBoard2(goodsName:String,getDiscountWords:(String,Int) ->String){
    val hours:Int = (1..24).shuffled().last()
    println(getDiscountWords(goodsName,hours))
}

 16.函数类型作为返回类型

fun main() {


    val configDiscountWords = configDiscountWords()
    println(configDiscountWords("Jack"))


}


fun configDiscountWords():(String)->String{

    return {goodsName:String ->
        val  currentYear =2027
        val hours:Int = (1..24).shuffled().last()
         "${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"

    }
}

 17.闭包

18.Lambda匿名内部类

都是一种思想,lamdba表达式可以被当作函数参数和返回值传递嘛 在kotlin里

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用idea连通服务器上的Redis(详细版本)

这里我使用的是阿里云的服务器 打开阿里云的安全组,设置端口为6379 在redis.conf文件中,注释bind 127.0.0.1 将protected-mode设置为no,即关闭保护模式 更改服务器中的防火墙,放行6379端口 # 放行端口 firewall-cmd --zo…

Java+SpringBoot构建智能捐赠管理平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

七天入门大模型 :提示词工程 Prompt Engineering,最全的总结来了!

文章目录 技术交流群用通俗易懂方式讲解系列引 言LLM 的超参配置Prompt Engineering指令主要内容少样本学习更加明确的提示善用分隔符思维链提示对输出格式的明确要求 最佳实践案例1. Agent场景:使用prompt实现agent create2. Agent场景:使用system mess…

AIGC | AI提示词构建

文章目录 📚BARD提示词构建法🐇前言🐇第一步:阐述背景Background🐇第二步:定义目标Aim🐇第三步:设定角色Role🐇第四步:设置要求Demand 📚测试与迭…

黑马程序员微信小程序学习总结7.工具脚本、自定义组件、data和properties的区别

目录 工具脚本(utils中的wxs)自定义组件组件的引用方式局部引用全局引用组件和页面的区别组件样式隔离data数据组件method事件处理函数自定义组件添加属性 data和properties的区别使用setData修改properties的值 工具脚本(utils中的wxs&#…

[缓存] - 1.缓存共性问题

1. 缓存的作用 为什么需要缓存呢?缓存主要解决两个问题,一个是提高应用程序的性能,降低请求响应的延时;一个是提高应用程序的并发性。 1.1 高并发 一般来说, 如果 10Wqps,或者20Wqps ,可使用分布…

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图: linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…

【Python网络编程之Ping命令的实现】

🚀 作者 :“码上有前” 🚀 文章简介 :Python开发技术 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Python网络编程之Ping命令的实现 代码见资源,效果图如下一、实验要求二、协议原理2…

P1990 覆盖墙壁题解

题目 有一个长为N宽为2的墙壁,给你两种砖头:一个长2宽1,另一个是L型覆盖3个单元的砖头。如下图: 0 0 0 00砖头可以旋转,两种砖头可以无限制提供。你的任务是计算用这两种来覆盖N2的墙壁的覆盖方法。例如一个23的墙…

petalinux2018.3安装步骤

1、虚拟机安装ubuntu-16.04.7-desktop-amd64.iso (注意:安装ubuntu-18.04.6-desktop-amd64.iso和ubuntu-16.04.6-desktop-i386.iso会报以下错误) environment: line 314: ((: 10 #15~1 > 10 #3: syntax error in expression (error toke…

幻兽帕鲁Palworld服务器设置参数(汉化)

创建幻兽帕鲁服务器配置参数说明,Palworld服务器配置参数与解释,阿腾云atengyun.com分享: 自建幻兽帕鲁服务器教程: 阿里云教程 https://t.aliyun.com/U/bLynLC腾讯云教程 https://curl.qcloud.com/oRMoSucP 幻兽帕鲁服务器 幻…

Mysql中关于on,in,as,where的区别

目录 Mysql on,in,as,where的区别 Mysql语句问题解决 1、left join数据筛选问题 2、相同数据重复筛选使用问题 3、根据某个字段排序取每个类别最后三条数据或前三条数据 4、业务逻辑书写位置问题 5、查找另一表内和本表相关字段的数量 6、关于union的使用 7、limit的巧…

2019年通信工程师初级 实务 真题

文章目录 一、第9章 通信动力与环境通信电源系统的主要功能:“供”、“配”、“储”、“发”、“变” 二、第2章 传输网三、第3章 接入网四、第4章 互联网 一、第9章 通信动力与环境 【问题一】 网络通信设备对动力与环境的质量要求可以归纳为 (1&#…

剑指offer——二进制中1的个数

目录 1. 题目描述2. 可能引起死循环的想法3. 改进后的代码4. 给面试官惊喜的代码 1. 题目描述 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制位1001,有2位是1,因此如果输入9,该函数输…

今天:旧时是这样“破五迎福”

昨(正月初四)天,笔者——“ 人民体验官 ”, 为了推广人民日报官方微博文化产品所发表在10余个网站自媒体平台上的文章《今天:大年初四迎灶神爷》,不知何故被笔者寄居养老城市的自媒体论坛反复拒之门外&…

猫头虎分享已解决Bug || ImportError: cannot import name ‘relu‘ from ‘keras.layers‘

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

MATLAB知识点:fibonacci函数(★☆☆☆☆)返回斐波那契数列

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章:课后习题讲解中拓展的函数 在讲解第…

【刷题记录】——2024寒假day9编程题

本系列博客为个人刷题思路分享&#xff0c;有需要借鉴即可。 1.目录大纲&#xff1a; 2.题目链接&#xff1a; T1:LINK T2:LINK 3.详解思路&#xff1a; T1: 思路&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/#include<…

数据卷的常见命令,如何创建Nginx容器,修改nginx容器内的html目录下的index.html文件

数据卷 什么是数据卷 数据卷&#xff08;volume&#xff09;是一个虚拟目录&#xff0c;是容器内目录与宿主机**目录**之间映射的桥梁。 以Nginx为例&#xff0c;我们知道Nginx中有两个关键的目录&#xff1a; html&#xff1a;放置一些静态资源 conf&#xff1a;放置配置文…

MySQL数据库⑩_视图+MySQL用户管理(增删查改)

目录 1. 视图的概念和规则限制 2. 视图的基本使用 2.1 创建视图 2.2 修改视图影响基表 2.3 修改基表影响视图 2.4 删除视图 3. MySQL用户管理 3.1 用户信息 3.2 创建用户 3.3 修改用户密码 3.4 删除用户 4. 用户权限 4.1 MySQL权限 4.2 给用户授权 4.3 回收权限…