kotlin语法总结(一)

BEV感知技术全景解析:从纯视觉到多传感器融合的实战指南 本文全面解析了自动驾驶中的BEV感知技术,从纯视觉到多传感器融合的实战应用。文章深入探讨了BEV如何提供“上帝视角”,对比了IPM、Lift-Splat-Shoot及Transformer等核心实现范式,并详细阐述了多传感器融合(尤其是中融合)的工程实践与优势,为开发者提供了从理论到原型搭建的完整指南。 阅读详情

下一章地址

kotlin语法总结(二)

文章目录


前言

接下来几章将总结一下kotlin的语法,总结kotlin和java不一样的地方


(1)var可修改、val只读(类型推断)、const val a = 1(编译时常量)

(2)kotlin只提供引用数据类型,会在字节码中变成基本书记类型

(3)when(a)、in 4…6->

    val art = 10
    when (art) {
        //等于3为少儿
        in 0..3 -> println("shaoer")
        in 3..12 -> println("11")
        else -> {
            print("$art lo")
        }
    }

(4)String模板:“Answer $b”,可带变量

(5)private fun fix(age:Int):String{}

(6)具名参数 fun fix(age:Int = 2,name:String){}

(7)没有返回值,Unit函数

(8)TODO函数:抛出异常

(9)匿名函数(lambda表达式)、it关键字、类型推断

val ble:()->String = {
        val ho = "aa"
        "happy $ho"
    }
val ble = {
        val ho = "aa"
        "happy $ho"
    }
val ble = {name:String,year:Int->

}

(10)内联函数:消除lambda表达式带来的额外开销

(11)高级函数:能接收函数或者返回函数的函数

(12)闭包:匿名函数能修改和引用定义在自己作用域之外的变量

(13)java中不支持函数作为参数传递,替代方案:匿名内部类

(14)安全调用操作符?:为空跳过函数调用

(15)let函数安全调用 it.isNotBlank()判空

var str1 = readLine()?.let {
        if (it.isNotBlank())
            it.capitalize()
        else
            "aaa"
    }
    //上面代码可简写成
    str1 = str1?.let { it.capitalize() }?:"aaa"

(16)非空断言操作符!!:为null抛异常

(17)空合并操作符?::左边值为空则使用右边的值,和let一起使用替代if/else

(18)异常:先决条件函数:checkNotNull require requireNotNull error assert

(19)subString:字符串截取函数

(20)List集合支持结构语法,可在一个表达式中给多个变量赋值

(21)===:比较地址、==比较值

(22)"aa s f ef g ".forEach{}

(23)安全转换函数:toIntOrNull 转换错误返回null

(24)“%.2f”.format(5.4566)、8.145.toInt()、roundToInt() 四舍五入

(25) apply函数 配置函数 返回当前接受者、let函数返回最后一行

(26)run函数返回lambda函数结果(true/false)

(27)::把一个方法当做参数传入

(28)with需要值参当做第一个参数传入

val isTooLong = with("aaaaaaaaaaa"){
        length>=0
    }

(31)集合List Set Map(只读和可变)MutableList/Set/Map listOf() +=/-= toList() IntArray数组 getOrNull getOrElse getOrPut

(32)kotlin中每一个属性,会自动产生field、getter、setter方法,可以去重写它们

(33)初始化顺序:主构造函数->初始化块->次构造函数

class Player01 (
    _name:String,
    //既是参数又是属性
    var age :Int = 20,
    var isNormal:Boolean
//    _age:Int,
//    _isNormal:Boolean

){
    var name = _name
    get() = field.capitalize()
    private set(value){
        field = value.trim()
    }
//    var age = _age
//    var nor = _isNormal

    //次构造函数
    constructor(name: String):this(name,100,false){
        this.name = name.toLowerCase()
    }

    //初始化块,在构造实例时执行
    init {
        require(age>0){"age < 0"}
        require(name.isNotBlank()){"Null"}
    }

}

fun main() {
    var player01 = Player01("a",10,true)
    var player02 = Player01("add")
    var player03 = Player01("s",isNormal = false)
    println(player02.name)
}

(34)延迟初始化两种方式:lateinit var a

class Player03(_name:String) {
    var name = _name
//    val config = loadConfig()
    val config by lazy { loadConfig() }

    private fun loadConfig() :String{
        println("load--")
        return "xxx"
    }
}

(35)初始化陷阱:执行顺序很重要

(36)开放继承 open(类和函数都要加)

open class produck(val name: String){
    fun de() = "Pr:$name"
    open fun lo() = "no"
}

//继承
class Lux:produck("aa"){
    override fun lo(): String {
        return "nn"
    }
}

(37)Any:所有类的父类

(38)智能类型转换

(39)object 单例

//object:对象声明
object AppConfig{
    init {
        println("........")
    }
    fun setSomething(){
        println("set")
    }
}
fun main() {
    //只声明一次
    AppConfig.setSomething()
    AppConfig.setSomething()
}
open class Player06{
    open fun load() = "......."
}

fun main() {
    //object:对象表达式,只用一次
    val p = object :Player06(){
        override fun load(): String {
            return "load"
        }
    }
    println(p.load())
}
open class ConfigMap{
    //伴生对象,只会初始化一次,只会有一个,用时加载
    companion object{
        private const val PATH = "xxx"

        fun load() = File(PATH).readLines()
    }
}

fun main() {
    //方法通过类名调用
    ConfigMap.load()
}
Transformer 跨界物理建模:探索模拟动态物理系统方法与实践(PINN、流体力学、有限元) 是一个由 Nicholas Zabaras 团队开发的开源项目,托管于 GitHub,旨在将 Transformer 模型(最初在自然语言处理领域大获成功)应用于物理系统的建模与预测。该项目基于论文 ​*“Transformers for Modeling Physical Systems”*​(Neural Networks, 2022),探索了深度学习中的 Transformer 架构如何通过自注意力机制和 Koopman 嵌入来模拟动态物理系统。 阅读详情

相关推荐

从零开始:手把手教你规划与部署华为FusionCompute虚拟化平台(含网络规划避坑指南)

本文详细介绍了华为FusionCompute虚拟化平台的规划与部署流程,特别针对网络规划中的常见问题提供了避坑指南。从硬件软件清单检查、网络平面配置到VRM部署方案选择,帮助用户高效完成部署并优化性能,适用于云计算环境中的虚拟化平台搭建。

weixin_28693447的博客 243

Kotlin中的by

1.Lazy 使用场景:大对象延迟初始化、单例模式。 注意 //1.必须使用val生命by lazy的变量 val b:Biz by lazy { Biz() } //2.参数 val bThreadSafe by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { Biz() } LazyThreadSafetyMode SYNCHRONIZED 双重锁单例 PUBLICATION 可以构造多次,仅返回唯一的一个 NONE 非线程安

象牙山庄 864

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7610

kotlin学习:val与var区别,by lazy与lateinit区别

Kotlin: Java 6 废土中的一线希望 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试 Kotlin for android developers中文翻译 Kotlin中var和val的区别 Kotlin中有两个关键字定义变量,这两个关键字外形看着差别很小就只差了一个字母,但实际差别很大的。 var是一个可变【变量】,这是一个可以通过重新分配来更改为另一个...

火星男孩的分享空间 5051

AD(AltiumDesigner)封装导入allegro生成allegro封装

AD(AltiumDesigner)封装导入allegro生成allegro封装 貌似PCB的封装问题是一个无尽话题,为了简单我总是想找捷径(主要还是太懒了),因为也是近期才开始学习使用allegro进行PCB设计,在最近的一个设计中,很多器件封装allegro中都没有,一个一个画感觉很费时间,但是在AD(AltiumDesigner)的封装库中是有的,于是便想着AD的封装库能不能倒入到alleg...

yangh2560的博客 2万+

【老生谈算法】可视化通道流中瞬时涡量场的算法实现与MATLAB源码分析——瞬时涡量场

本文旨在探讨可视化通道流中瞬时涡量场的方法,并通过MATLAB编程实现这一过程。涡量场作为描述流体旋涡强度和方向的重要物理量,对于理解复杂流体运动具有重要意义。本文首先介绍了涡量场的基本概念,随后详细阐述了从测量数据收集到涡量场可视化的完整流程,并给出了相应的MATLAB源码。通过实际运行该源码,我们展示了涡量场的可视化结果,并讨论了其在流动结构识别和动力学行为理解中的应用。关键词: 涡量场;流体运动;MATLAB;可视化;PIV一、引言。

m0_53407570的博客 1124

Android筑基——Kotlin by 关键字详解

1.前言 Kotlin 中的 by 关键字在 Java 中是没有的,这使我对它感到非常陌生。 Kotlin 中为什么要新增 by 关键字呢?by 关键字在 Kotlin 中是如何使用的? 本文会介绍 by 关键字的使用分类,具体的示例,Kotlin 内置的 by 使用,希望能够帮助到大家。 2.正文 by 关键字的使用分为两种:类委托和委托属性。 2.1 类委托 现在有一个需求,统计向一个 HashSet 尝试添加元素的尝试次数,该怎么实现? 2.1.1 使用继承方式实现 简单,继承一个 HashSet,创

willwaywang6 1万+

使用moveit!控制真实机械臂(5)——编写真实机械臂节点中的action服务程序

上一篇文章中,我们简要介绍了ROS中action的基本知识,为了控制真实机械臂,我们已经修改了moveit配置文件,使得moveti启动后具备一个control_msgs::FollowJointTrajectoryAction类型的action客户端,接下来,我们完成该类型action的另一半,编写C++程序来实现action的服务端。由于底层机器人控制程序一般差别都很大,这里展示的只是编程要点...

爱学习的草莓熊 1万+

Kotlin 成员变量详解:var、val、lateinit、by lazy 及 getter/setter

在 Kotlin 中,成员变量(属性)是类的核心组成部分。Kotlin 提供了 `var`、`val`、`lateinit`、`by lazy` 等关键字,以及自定义 `getter` 和 `setter`,帮助开发者更灵活地管理对象的状态。这篇文章将深入介绍这些概念,并给出适用场景和最佳实践。

居然是阿松的博客 1021

微信小程序 - 实现嵌套H5页面唤起微信支付的实现方案+完整流程源码,微信小程序webview(H5页面)调用微信小程序支付,嵌套h5页面怎么实现小程序支付(Vue2/3移动端H5网页、公众号网页等)

h5嵌入微信小程序微信支付,H5网页嵌入到微信小程序内如何支付,微信小程序webview组件交互,内联h5页面并网页实现微信支付,微信H5页面实现微信小程序支付,微信小程序嵌套webview实现小程序微信支付,小程序中内嵌H5网页支付怎么办,用网页的支付还是小程序的支付?支付没反应,支付报错怎么办,微信小程序内嵌h5,h5调用小程序支付功能解决方案,H5网页cors跨域,真机测试无法唤起支付,无法唤起支付,uniapp微信小程序,h5小程序调用微信支付,微信小程序内嵌H5页面,如何实现微信支付功能,微信小程

🏆 前端领域优质创作者 1万+

音乐生成 - 使用LSTM或Transformer模型进行音乐生成,如MIDI音乐生成。

在本篇博客中,我们将介绍如何使用LSTM和Transformer模型生成MIDI音乐。我们将首先概述音乐生成的一般流程,然后深入了解LSTM和Transformer模型的特点和实现。最后,我们将通过Python代码演示如何使用这两种模型生成MIDI音乐。

斌擎科技 1720

Kotlin-代理属性(by)

Kotlin-代理属性(by)

转载和创作优秀的博客 772

从服务器到桌面超算:当3999美元的NVIDIA DGX Spark装上Ubuntu,普通开发者能玩出什么花?

DGX Spark的出现,标志着AI算力正在经历从"数据中心集中供给"到"个人桌面按需拥有"的范式转移。它让开发者可以在本地完成从数据预处理、模型微调到推理验证的全流程,只有在需要大规模训练时才调用云端资源。迭代速度:从按小时计费的云端调试,变成随时随地的本地实验数据主权:敏感信息永不离开本地成本可控:一次投入,长期使用,不受API调用次数限制AI算力民主化的时代,真的来了。你的下一台超级计算机,不必在云端。它就在你的桌面上,安静地等待着你的下一个创意。附录:实用资源。

QQ_778132974的博客 615

一.Kotlin之基础语法

kotlin的学习笔记,基础语法篇

weixin_37758967的博客 3268

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

一、kotlin基础语法学习

java源码如下: kotlin编译器将文件加上 做成了 java 的类名, 而 是类的静态方法, 在 kotlin 中被称之为 java调用kotlin只需要如此: 下面是java调用kotlin顶层函数的方式 函数声明和定义 kotlin使用 fun 关键字定义函数:普通函数体形式: kotlin中还有表达式函数体形式, 如下: 什么是表达式? , , , 这些都是表达式还有 这三个也是表达式 这里存在一个问题. 变量 为 , 如果不经过 语句, 则会在下面变成 直接报错如果我们使用

bangiao的博客 1174

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Kotlin语法手册(一)

Kotlin语法手册(一) 在使用kotlin时,由于掌握的不够牢靠,好多时候也还是Java编程的习惯,浪费了kotlin提供的语言特性,方便性,间接性,在阅读一些Android开源库的时候,由于好多都是kotlin语法编写的,看的比较费劲,还得去查阅kotlin的语法,比较不方便,故把kotlin的语法记录下来,方便查阅温故,巩固自己的基础知识。 变量 kotlin 中,变量分为 可变变量(var)  和 不可变变量(val)  两类。 val:不可变引用,对应的

gf785803055的专栏 1692

IMSL CNL 7.0.0 (x86-64)Crack

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

java kotlin 语法_浅谈Kotlin语法篇之基础语法(一)

Kotlin的基本语法的介绍,先从整体上体会kotlin的编程风格。一、包的声明在Kotlin中定义包与Java有点不同,在Kotlin中目录与包结构无需匹配,Kotlin的源码可以在磁盘上的任意位置。1、包的声明源文件的通常是以包的声明的开头和Java一样。package com.mikyou.hellokotlin/*** Created by mikyou on 2018/4/1.*/fu...

weixin_42309087的博客 349

Kotlin-基础语法练习一

基础操作运算符 输入 输出操作 类型转换操作

weixin_47905944的博客 956

学习Kotlin语法(一)

学习Kotlin随笔记录

m0_56334538的博客 1299

Kotlin基础语法教程(一)

目录Kotlin基础语法教程(一)Kotlin概述基础语法Hello World变量和数据类型常量和变量基本数据类型非空类型与可空类型函数声明字符串模板流程控制if语句/表达式when语句/表达式循环语句带标签的break和continueKotlin运算符算术运算符、逻辑运算符和关系运算符位运算符其他运算符局部函数和匿名函数数组基本数据类型数组对象数组Kotlin概述Kotlin是由开发过Int...

hehuoU的博客 1492

Kotlin基本语法一

上一篇介绍了 Android Studio安装Kotlin插件和使用,本篇介绍Kotlin基本语法。一 变量(var)和常量(val)Kotlin 语言声明一个变量使用关键字var,声明一个常量使用val,声明时如果没有指定类型可以自动推测出字段类型。1 常量 (val) val a: Int = 1 // 定义常量时进行赋值 val b = 2 // 自动推测常量类型为 Int val

zhangqiluGrubby的博客 931

Kotlin基础语法一

【代码】Kotlin基础语法一。

zackjary的专栏 224

(一)Kotlin—基础语法

本文是Kotlin基础语法快速入门指南,适合有Java基础的开发者。主要内容包括: 变量声明:使用val(只读)和var(可变),支持类型推断 基本数据类型:整型、浮点型、布尔型、字符型和字符串类型 运算符:算数、位运算(如shl、shr等特殊语法)和逻辑运算符 流程控制:if-else表达式、when多分支语句(类似Java的switch但更强大) 文档通过简洁的语法对比和示例代码,帮助Java开发者快速掌握Kotlin的核心语法特性,建立两种语言间的对应关系。所有示例都附带运行结果,便于理解。

自己在学习过程中的总结 294

Kotlin系列一(基本语法)

前言  前两天在Google IO 大会上宣布Kotlin成为开发Android的官方语言,之前就对Kotlin有一定的了解和关注,但是一直没花时间学习,那么,现在Kotlin成为官方语言了,想必一定有很多的语言特性,更加方便我们Android开发者,所以,跟我一起开始学习这门语言吧。 PS:我目前的学习都是在官网在看的文档,只是简单的翻译了下,如有不对,欢迎指出和交流。1,包的定义  跟Java一

a172131234的博客 8286

Kotlin 基本语法(一)

文章目录一、Android 中的日志工具类 Log二、变量和函数2.1、变量2.2、函数(方法)2.3、语法糖三、程序的逻辑控制3.1、if 条件语句3.2、when 条件语句3.3、循环语句 一、Android 中的日志工具类 Log Log.v():对于级别 verbose,是 Android 日志里面级别最低的一种。用于打印那些最为琐碎的、意义最小的日志信息。 Log.d():对应级别 debug,比 verbose 高一级。用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。 Lo

csdn1225987336的专栏 744

浅谈Kotlin语法篇之基础语法(一)

Kotlin的基本语法的介绍,先从整体上体会kotlin的编程风格。 一、包的声明 在Kotlin中定义包与Java有点不同,在Kotlin中目录与包结构无需匹配,Kotlin的源码可以在磁盘上的任意位置。 1、包的声明 源文件的通常是以包的声明的开头和Java一样。 package com.mikyou.hellokotlin /** * Created by mikyou...

android开发笔记 208
上一篇: 自定义ViewGroup实现搜索栏历史记录流式布局
下一篇: kotlin语法总结(二)
浮空over
博客等级 码龄7年 6粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值