Kotlin语法-Day4

本文详细介绍了Kotlin编程语言中的几个重要内置函数,如apply始终返回对象本身,let函数根据最后一行返回类型,run函数用于字符串延时和其他具名函数操作,with函数的使用,以及also函数在处理对象时的特性。同时,文章还涵盖了List的创建、元素获取、可变集合操作和遍历方法,提供了一系列示例来帮助理解这些概念。


一、

1.1 apply内置函数

1.apply函数始终返回当前对象本身
2.apply函数 匿名函数持有的是 this 本身

//TODO Kotlin语言中的apply内置函数
fun main() {
    val info:String ="Zhangsan Is A Boy"


    //普通方式
    println("info字符串的长度:${info.length}")
    println("info最后一个字符是:${info[info.length-1]}")
    println("info全部转换成小写是:${info.toLowerCase()}")


    println("")
    //apply内置函数的方式
    //info.apply特点:apply函数始终返回info本身String类型
    var result = info.apply {
        //一般大部分情况下,匿名函数,都会持有一个it,但是apply函数不会持有it,但是会有一个this==info本身
        println("apply匿名函数里面打印的:$this")
        println("info字符串的长度:${this.length}")
        println("info最后一个字符是:${this[this.length - 1]}")
        println("info全部转换成小写是:${this.toLowerCase()}")
    }

    println()
    println("apply函数返回的数据是:$result")

    //真正使用apply函数的写法规则如下:
    //info.apply特点:apply函数始终是返回"info本身" 可以链式调用
    info.apply {
        println("长度:${this.length}")
    }.apply {
        println("最后一个字符是:${this[this.length - 1]}")
    }.apply {
        println("换成小写是:${this.toLowerCase()}")
    }
}

在这里插入图片描述


1.2 let内置函数

1.let函数根据最后一行代码返回类型进行返回
2.let函数 匿名函数里面持有的是it

//TODO Kotlin语言中的let内置函数
fun main() {
    //普通方式 对集合第一个元素相加
    val list= listOf(6,5,2,3,42,4)
    val value1 = list.first()
    val result =value1+value1
    println(result)

    //let方式 对集合第一个元素相加
    //let函数返回类型, 根据最后一行的变化而变化
    val result1 = list.let {
        it.first() + it.first()
    }

    val result2 = list.let {
        true
    }

    println(result1)

    println(result2)
}

在这里插入图片描述


1.3 run内置函数

1.run函数根据最后一行代码返回类型进行返回
2.run函数 匿名函数里面持有的是this

//TODO Kotlin语言中的run内置函数
//1.run函数的特点 字符串延时
//2.具名函数判断长度 isLong
//3.具名函数检测合格 showText
//4.具名函数增加一个括号 mapText
//5.具名函数输出内容
fun main() {
    val str="ZhangSan is Ok"

    //匿名函数
    str.run {
      if(this.length>5) true else false
    }.run {
        if(this) "你的字符串合格" else "你的字符串不合格"
    }.run {
        "[$this]"
    }.run {
        println(this)
    }


    //具名函数
    str.run(::isLong)
        .run(::showText)
        .run(::mapText)
        .run(::println)
}
fun isLong(str:String) /*:Boolean=*/=if (str.length>5)  true else false
fun showText(isLong:Boolean)=if (isLong) "你的字符串合格" else "你的字符串不合格"
fun mapText(showText:String)="[$showText]"

在这里插入图片描述


1.4 with内置函数

1.with函数根据最后一行代码返回类型进行返回
2.with函数 匿名函数里面持有的是this

//TODO Kotlin语言中的with内置函数

//with调用与前三个不同
// with(xxx){
//
//    }
fun main() {
    //具名函数
    val str="虎牙刘伟"
    val r1 = with(str, ::getStrLen)
    val r2 = with(r1, ::getLenInfo)
    val r3 = with(r2, ::getInfoMap)
    with(r3, ::show1)


    println()
    //匿名函数
    with( with( with( with(str){
        length
    }){
        "你的字符串长度是$this"
    }){
        "【$this】"
    }){
        println(this)
    }
}
fun getStrLen(str:String)=str.length
fun getLenInfo(len:Int)="你的字符串长度是$len"
fun getInfoMap(info:String)="【$info】"
fun show1(content: String) = println(content)

在这里插入图片描述


1.5 also内置函数

1.also函数始终返回当前对象本身
2.also函数 匿名函数持有的是 it

//TODO Kotlin语言中的also内置函数
fun main() {
    val str="ABCDEFGHIJKLMNOPQRSTUVWXYZ"


    str.also {
        println("str的原始数据是:$it")
    }.also {
        println("str转换成小写的效果是:${it.toLowerCase()}")
    }
}

在这里插入图片描述


1.6 takeIf takeUnless

PS:
xxx.takeIf { true/false }
true:: 直接返回name本身
false: 直接返回null

xxx.takeUnless {true/false}
false:直接返回name本身
true: 返回null

1.7 List创建与元素获取

//TODO Kotlin语言中的List创建与元素获取
/*
*
* 普通获取方式:   索引
* 防止奔溃取值方式:
*
* getOrNull  getOrElse
* */
fun main() {
    val list= listOf("zhangsan","lisi","wangwu","maliu")

    //普通取值方式:   索引
    println(list[0])
    println(list[1])
    println(list[2])
    println(list[3])
    //println(list[4])   //越界  ava.lang.ArrayIndexOutOfBoundsException

    println()

    //用KT代码 一定不会出现崩溃
    println(list.getOrElse(3){"越界"})
    println(list.getOrElse(5){"越界"})

    println()

    println(list.getOrNull(1))
    println(list.getOrNull(5))
    //getOrNull+空合并操作符
    println(list.getOrNull(5) ?:"超过最大范围了")


}

在这里插入图片描述


1.8 可变List集合

mutableListOf()

//TODO Kotlin语言中的可变集合
fun main() {
    //可变集合
    val list= mutableListOf<String>("zhangsan","lisi","wangwu","maliu")
    list.add("新元素")
    list.remove("maliu")
    println(list)

    //不可变集合 to 可变集合
    val list2= listOf(123,456,789)
    //不可变的集合无法进行可变操作
//    list2.add()
//    list2.remove()
    val list3:MutableList<Int> = list2.toMutableList()
    list3.add(111)
    list3.remove(456)
    println(list3)
    
}

在这里插入图片描述


1.9 mutator

//TODO Kotlin语言中的mutator
//1.mutator += -= 操作
//2。removeIf
fun main() {

    //1.mutator += -= 操作
    val list= mutableListOf<String>("Dali","DaDa","DongXi","NanBei")
    list+= "李四"
    list+= "王五"
    list-="DongXi"
    println(list)

    //2.removeIf
//    list.removeIf { true }  //如果是true  自动遍历整个可变集合,进行一个元素一个元素的输出
//    println(list)

    list.removeIf { it.contains("Da") } //过滤所有的元素,只要是有Da的元素
    println(list)
}

在这里插入图片描述


1.10 List集合遍历

//TODO Kotlin语言中的List集合遍历
fun main() {

    val list= listOf(1,2,3,4,5,6)

    println(list) //输出list详情 并不是遍历集合

    //第一种 遍历方式:
    for (i in list) {
        print("元素$i  ")
    }
    println()
    //第二种 遍历方式
    list.forEach{
        print("元素:$it")
    }
    println()
    //第三种 遍历方式
    list.forEachIndexed{
        index,item->
        print("下标:$index, 元素:$item")
    }
}

在这里插入图片描述


二、内置函数总结

在这里插入图片描述

<think>嗯,用户这次的问题很明确——想阻止谷歌浏览器每次启动时自动弹出配置窗口。结合之前的对话,用户已经尝试过一些配置操作(比如引用[2]提到的快捷方式参数修改),但似乎遇到了新的困扰。用户提供的四个引用中,引用[2]关于全屏启动的内容其实已经隐含了关键线索——通过快捷方式参数控制浏览器行为。而引用[4]提到的端口参数化方法也验证了这种思路的通用性。不过用户真正需要的不是添加功能而是关闭某功能,这需要逆向思维。深层需求可能是:用户在使用某些企业级或教育版Chrome时遇到强制配置弹窗(常见于学校机房或公司电脑),或者安装某些插件后导致浏览器行为异常。考虑到用户之前研究过跨域配置等开发者功能,应该有一定技术基础。解决方案的核心在于识别弹窗来源:1)如果是Chrome自身更新引导,清理注册表就能解决2)如果是第三方程序注入,需要检查启动项3)如果是组策略限制(企业环境常见),则需要更高权限操作最安全的切入点是从用户权限最高的层面开始排查——先检查快捷方式参数是否被植入启动配置页的指令。这里有个细节:配置页的URL通常是chrome://settings/onStartup,而强制跳转可能通过--launch-on-startup=force-url这类参数实现。用户没提操作系统类型,但引用[2]显示ta熟悉Windows注册表操作,所以优先给Windows方案。注册表路径HKEY_CURRENT_USER\Software\Policies下的chrome子项要特别检查,企业环境常用这里部署强制策略。最后那个临时退出技巧是实战经验:当用户被迫进入配置页时,在地址栏手动跳转about:blank可以立即打断引导流程,比强行关闭进程更优雅。</think> 根据您的需求,这是管理谷歌浏览器配置窗口的完整解决方案,按优先级排序操作: ### 一、关闭浏览器自动配置(根源处理) 1. **修改快捷方式属性**(推荐首选) - 右键浏览器快捷方式 → 选择「属性」 - 在「目标」栏删除类似以下参数: ```bash --force-first-run --no-first-run ``` - ✅ 正确格式示例(参数末尾有空格): ```bash "C:\Program Files\Google\Chrome\Application\chrome.exe" --kiosk ``` 2. **清理注册表残留**(Windows系统专用) - 按 `Win+R` 输入 `regedit` - 导航路径: ``` HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome ``` - 删除右侧 `ForceFirstRun` 和 `RestoreOnStartup` 键值 - 检查路径: ``` HKEY_CURRENT_USER\Software\Policies\Google\Chrome ``` ### 二、修改默认启动行为(直接生效) 1. **设置默认启动页** - 浏览器地址栏输入 `chrome://settings/onStartup` - 选择「打开特定页面」→ 添加 `about:blank`(空白页) 2. **配置文件重置**(终极方案) - 访问 `chrome://settings/reset` - 点击「将设置还原为原始默认值」→ 确认重置 > ⚠️ 会清除扩展、主题等个性化配置[^3] ### 三、解决特殊情况 ▶ **企业环境管控** 在组策略编辑器中(`gpedit.msc`)禁用: ``` 计算机配置 → 管理模板 → Google → Google Chrome → 禁用「显示首次运行体验」 ``` ▶ **临时强制退出技巧** 启动浏览器时出现配置页→在地址栏输入并访问: ``` chrome://quit ``` 立即关闭所有浏览器进程 --- ### 操作验证表 | 操作步骤 | 是否需重启 | 生效概率 | |---------------------------|-------------|----------| | 快捷方式参数清理 | 否 | 95% | | 注册表清理 | 是 | 80% | | 设置默认启动页 | 否 | 90% | | 重置浏览器配置 | 是 | 100% | > 📌 最佳实践:先用「快捷方式参数清理」+「设置默认启动页」,无效时再执行重置操作 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值