Kotlin基本语法练习第二章

【Kotlin】Kotlin 基础语法指南 kotlin复制代码。 阅读详情

kotlin基本语法练习第二章

函数声明和动态参数
try cath用法
break 和continue流程控制关键字的使用、标签的声明和使用
类声明和类成员函数调用
作用域函数的使用
委托属性的声明和使用

package com.wzx.jetpartpro

import java.lang.IllegalArgumentException
import java.lang.IllegalStateException
import kotlin.reflect.KProperty


/*
* create by WuZhouXing
* on 2020/5/9 18:06
*
*/

/*
*  @author  wuzhouxing  2020/5/9 18:08
*  @description 委托属性
*  延迟属性(lazy properties): 其值只在首次访问时计算;
*  可观察属性(observable properties): 监听器会收到有关此属性变更的通知;
*  把多个属性储存在一个映射(map)中,而不是每个存在单独的字段中。
*/

class Example {
    var p: String by Delegate()
}

class Delegate {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
        return "$thisRef,thank you for delegating '${property.name}' to me!"
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
        println("$value has been assigned to '${property.name}' in $thisRef")
    }
}

val lazyValue: String by lazy {
    println("computed!")
    "Hello"
}

data class Person(var name:String, var age:Int, var city:String){
    fun moveTo(newCity:String){
        city=newCity
    }
    fun incrementAge(){
        age++;
    }
}




/*
 *  @author  wuzhouxing  2020/5/12 16:04
 *  @description 函数的默认参数 ,类似python 动态传参,没有java中强制传参的形式
 *   def readfile(test="fets",cha=1): 动态类型编程语言,不需要类型声明
 */
fun foo(a: Int = 0, b: String = "") {

    /*
    *  @author  wuzhouxing  2020/5/12 16:11
    *  @description 检测元素是否在集合中
    */
    val emaillist = listOf<String>("One", "Two", "Three", "Four")
    if ("One" in emaillist) {
        println("obj contains")
    }

    /*
*  @author  wuzhouxing  2020/5/12 16:19
*  @description 返回和挑战,kotlin中标签的使用
*/
//在kotlin中任何表达式都可以用标签(label)来标记,标签的格式为标识符后跟@符号
    loop@ for (i in 1..100) {
        println("sample1=$i")
        for (j in 1..100){
            if(i<=j)
                println("sample3 break i=$i,j=$j")
                break@loop
        }
    }


    //break 跳出内层循环
     for (i in 1..100) {
        println("sample2=$i")
         loop@for (j in 1..100){
            if(i<=j)
                println("sample2 break i=$i,j=$j")
            break@loop
        }
    }

    loop@ for (i in 1..100) {
        println("sample3=$i")
        for (j in 1..100){
            if(i<=j)
                println("sample3 continue print i=$i,j=$j")
            continue@loop
        }
    }
}

fun foo1(){
    /*
    *  @author  wuzhouxing  2020/5/12 16:39
    *  @description lambda这个内联函数的我也不习惯,敲惯了冗余代码的人,觉得太花哨
    */
    //lambda 表达式
    listOf(1,2,3,4,5).forEach{
        if(it==3) return
        println(it)
    }
}

fun count(){
    val strArr=listOf("try", "catch","test")
    val length=strArr.size>3?:throw ArithmeticException("List size error")
}

/*
*  @author  wuzhouxing  2020/5/12 16:54
*  @description try catch表达式
*/
fun test(){
 val result=try{
     count()
 }catch (e:java.lang.ArithmeticException){
     throw IllegalStateException(e)
 }
}




fun main() {
    println(lazyValue)
    println(lazyValue)
//    foo()
//    foo1()
    test()

    /*
    *  @author  wuzhouxing  2020/5/12 17:02
    *  @description 使用可以为空的布尔值
    */
    val b:Boolean?=true
    if(b==true){
       println("b is true")
    }else{
        println("b is false or null")
    }

    val temp:Boolean?=null
    if(temp==true){
        println("temp is true")
    }else{
        println("temp is false or null")
    }


    /*
    *  @author  wuzhouxing  2020/5/12 17:26
    *  @description Scope Function 全局作用域函数 有五个这样得函数: let, run, with, apply, and also
    *
    */

    //also 上下文对象 可以作为参数it,传入obj的值
    val numbers= mutableListOf("one","two","three")  //字符串集合对象
    numbers.also { println("The list elements before adding new one: $it") }
            .add("four")

    //let 方法体,obj作为it参数传入,可以直接调用obj桉树
     val alice:Person= Person("Alice",20,"Amsterdam")
     alice.let {
                 println(it)
                 it.moveTo("London")
                 it.incrementAge()
                 println(it)
             }

    //let 方法体里面调用函数处理it也就是str
//    val str:String?="Hello"
    val str:String?=null
    val length=str?.let {
        println("let() called on $it")
        processNonNullString(it)
        it.length
    }
    println("length is $length")


    /*
    *  @author  wuzhouxing  2020/5/12 18:17
    *  @description Scope Function run
    */
    //网络请求
    val service=MultiportService("https://example.kotlinlang.org", 80)
    val result=service.run {
        port=8080
        query(prepareRequest()+" to port $port")
    }

    val letResult=service.let {
        it.port=8080
        it.query(it.prepareRequest()+"to port ${it.port}")
    }
    println(result)
    println(letResult)

}

class MultiportService(var url:String,var port:Int){
    fun prepareRequest():String="Default request"
    fun query(request:String):String="Result for query '$request'"
}

fun processNonNullString(str:String){

}

Kotlin语法整理 阅读详情

相关推荐

kotlin语法讲解基础1-2

kotlin语法讲解基础1-2,后面还有后续视频,想学接着看

kotlin 汇总练习

测试一: /** * 少数名族,每科成绩加五分,并展示 */ data class User1( var physical: Int = 10, var chemistry: Int = 20, var geography: Int = 30, var chinese: Int = 40, var math: Int = 50, var engl...

火星男孩的分享空间 1075

kotlin_exercises:Kotlin编码练习

kotlin_exercises Kotlin编码练习

kotlin基础语法练习

kotlin基础语法练习 package com.example.kotlintest2 import kotlin.math.max fun main(){ print("请输入c的值") var c = Integer.parseInt(readLine()) var a: Int = 10 var b: Int = 15 println("a + b = "+ getSum(a,b)) println("a 和 b 中大一些的是" + getBig(

weixin_44082112的博客 374

CentOS 7 常用命令大全

CentOS中Linux命令

m0_63075763的博客 2017

OCEAN 电路仿真

介绍利用 Cadence OCEAN 进行电路脚本仿真的方法

weixin_43249158的博客 4401

Kotlin基本语法练习第一章

/* * create by WuZhouXing * on 2020/5/9 16:01 * 在 Kotlin 中,所有东西都是对象 $ 用来调用对象 变量 函数 和类 * 在这个意义上讲我们可以在任何变量上调用成员函数与属性 * ${} 函数、对象、或者表达式 */ //顶层变量: val propertyParams = 3.14 var x = 0 //表达式作为函数体 自动推导返回值类型 fun sum(a: Int, b: Int) = a + b //1.条件表达式 fun max.

duty_is_codeing的专栏 537

华为Atlas 300I推理卡驱动安装全攻略:从环境检查到常见问题解决

本文提供了华为Atlas 300I推理卡驱动安装的完整实战指南。从安装前的系统环境检查、内核版本匹配,到详细的二进制.run文件安装步骤、源码编译及高级定制化部署,涵盖了驱动安装的全流程。文章重点解析了安装过程中的关键决策、常见问题排查与解决方案,并针对生产环境的多卡配置、性能调优及安全加固给出了专业建议,旨在帮助用户高效、稳定地完成AI推理加速卡的部署。

swift5iosmith的博客 627

kotlin语法学习

Kotlin的集合设计与Java不同的是,它把访问集合数据的接口和修改集合数据的接口分开了。使用这个接口,可以遍历集合中的元素、获取集合的大小、判断集合中是否包含某个元素,以及执行其他从该集合中读取数据的操作。在kotlin中,if是一个表达式所以他会返回一个值,表达式的值为表达式作用域内最后一行的值。lambda表达式作为方法中的参数时候,定义transform方法,可以对数组中的元素进行变换。因为数组的原始大小已经确定,在lambda表达式中接收数组的下标,并返回一个该下标位置的值。

Text_09的博客 2515

conda环境的复制、备份操作

请确保将 source_env 替换为你要复制的现有环境的名称,并将 target_env 替换为你要创建的新环境的名称。要备份一个Conda虚拟环境,你需要将环境的配置信息和依赖包列表保存起来,以便在需要的时候能够重新创建相同的环境。要将现有的 conda 环境复制为其他环境,可以使用 conda create 命令并克隆已存在的环境。

Dollhan的博客 3771

药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例

定义分子结构文件。

kkchenjj的博客 578

kotlin码上开学练习题

​这个系列是扔物线码上开学系列课程的课后练习题,记录的也主要是一个java程序员在转kotlin 时重点关注的一些用法的比较。 《Kotlin 的变量、函数和类型》 子类重写父类的override函数,能否修改它的可见性;以下的写法有什么区别?可空变量的声明、初始化和传参 《Kotlin 里那些「不是那么写的」》 单例练习、数组和集合的练习; 《Kotlin 里那些「更方便的」》 主构造器和字符串模板$的练习; 循环的用法;为什么数组的 filter 之后变成 List

qq_33298609的博客 1131

Claude Code(1):手把手教你安装配置 Claude Code

Claude Code 是一款强大的 AI 编程助手工具,能够帮助开发者提升编码效率。本文将详细介绍如何在不同操作系统上安装和配置 Claude Code,让你快速上手这款工具。

blues_C的博客 744

Kotlin基本语法

Kotlin基本语法

weixin_45625639的博客 1384

【我的Android进阶之旅】解决android应用使用android:persistent属性带来的系统Launcher应用必须重启设备才生效的问题,大幅度提升开发效率

一、问题描述 我们在开发系统级别应用,比如Launcher桌面的时候,会发现有个问题:每次Launcher修改完代码,重新编译之后,安装到android设备上之后,必须重启才会生效。否则就是使用了之前的Launcher版本的内容。而每次重启设备得一分钟左右,太慢了,太影响效率了! 1.1 痛点 每次更新完代码,重新安装之后,必须重启设备才会生效。效率太TM低了! 二、分析问题 经过一轮代码排查,最终发现是因为src\main\AndroidManifest.xml文件中,定义application使用了an

字节卷动 1711

超详细的Burp Suite安装使用

‌Burp Suite是一个强大的Web应用安全测试工具,适用于网络安全专业人士进行自动化网络应用程序的安全测试。‌ 它提供了在Windows和Kali Linux上安装和激活Burp Suite Professional的简便步骤,帮助用户快速集成并启用强大的网络扫描和渗透测试功能。Burp Suite的特点包括易于安装、良好的兼容性、内置的自动化工具、优秀的用户体验以及详细的教程,使得无论是安全领域的新手还是经验丰富的专家,都能轻松上手并高效地进行安全测试。此外,Burp Suite还支持扩展功能的使用

Dreams°的博客 2641

kotlin基本语法

函数 表达式:fun 方法名(参数名1: 数据类型, 参数名2: 数据类型): 返回值数据类型{ } 普通用法 fun test(a: Int): String { return ""; } // 将表达式作为函数体,花括号可以省略 fun test1(a: Int): Int = 1; // 函数返回无意义的值Unit,返回值可省略 fun printSum(a: Int, b: Int) { println("sum of $a and $b is ${a + b}") }

Florizt 5999

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Kotlin第二章:Kotlin 的基本语法

Kotlin第二章:Kotlin 的基本语法

逆雪残阳的博客 423

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Kotlin-基础语法练习三

本文介绍了Kotlin中数组(Array)和字符串(String)的基本用法。主要内容包括:1)数组的创建方式,如使用arrayOf()函数、Array构造函数和工厂方法;2)数组元素的访问和修改,包括get()/set()方法和索引操作;3)数组遍历技巧,如for循环和forEach方法;4)可变参数(vararg)的使用,包括如何通过*运算符将数组展开为参数传递,以及如何结合普通参数和命名参数使用。文章通过多个代码示例展示了这些特性的实际应用,帮助开发者掌握Kotlin中处理数组和可变参数的技巧。

weixin_47905944的博客 1073

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Kotlin基础语法

Kotlin是一种在Java虚拟机上运行的静态类型编程语言,被称为之为Android世界的Swift,Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言,足见Kotlin将来会成为android开发的主流语言。

qtiao的博客 1万+

Kotlin Primer·第二章·基本语法

题外话:全书的目录以及主要内容已经公开,可在我公众号【技术实验室】的历史推送文章查看 已经公开章节: 第一部分——快速上手 第一章·启程 第二章·基本语法 第三章·Kotlin 与 Java 混编 第二部分——开始学习 Kotlin 第四章·类与对象(上) Kotlin 程序是什么样子的?...

chuomengzhi7371的博客 250

Kotlin语法

java和Kotlin把兄弟,但是如果不了解Kotlin的语法而阅读它的源码还是有一点困难。毕竟语法糖嘛。所以收集整理一下Kotlin的语法,对小白来说可以方便的理解,毕竟同根嘛。 fun main(args: Arrag<String>){// 函数声明 程序入口 函数接收的参数名 参数的数据类型(字符串数组) println("Hello World") } var a ...

稻草人的博客 2042
上一篇: Kotlin基本语法练习第一章
下一篇: Glide Unacceptable certificate
WoozXi
博客等级 码龄14年 7粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值