合浦县城乡规划建设局网站电商网站开发用什么软件好

张小明 2026/1/2 10:31:12
合浦县城乡规划建设局网站,电商网站开发用什么软件好,做pcr查基因序列的网站,wordpress多域一网大家吼哇#xff0c;这次轮到 Kotlin 2.3.0 登场啦#xff01; 本次更新内容可以在 JetBrains 官方的 What’s new in Kotlin 2.3.0 查阅#xff0c; 我照例挑自己最感兴趣的改动聊聊。 一句话总结#xff1a;Java 25 终于支持#xff0c;特性体验逐渐舒适。实用功能层出…大家吼哇这次轮到 Kotlin 2.3.0 登场啦本次更新内容可以在 JetBrains 官方的 What’s new in Kotlin 2.3.0 查阅我照例挑自己最感兴趣的改动聊聊。一句话总结Java 25 终于支持特性体验逐渐舒适。实用功能层出不穷小伙伴们赶快更新注意这次依旧是「我个人 pick」的更新摘要覆盖不了全部改动对其他领域感兴趣、但是我没提到的伙伴可以继续深入官方文档喔。文中示例如无特殊说明均来自或改写自官方日志。语言特性一如既往先看语言层面首先映入眼帘的是对一部分实验特性的转正然后是一批新晋实验特性最后是对 Java 25 的支持。一如既往的方阵阵营。嵌套类型别名 when数据流穷举转正稳定之前在 2.2.x 里加入的「嵌套 typealias 支持」(Support for nested type aliases)和「基于数据流的when穷举检查」(Data-flow-based exhaustiveness checks forwhenexpressions) 转正咯。现在写多层 typealias 不会再有警告when也会结合 smart cast 和sealed的上下文做更聪明的穷举判断了。默认启用suspend解析 函数表达式里return注意这个更新是在2.3.0的某个 EAP 版本中描述的但是在 2.3.0 正式版更新中没有描述因此它可能被移除了。Kotlin 2.3.0 默认启用了两项之前需要-language-version 2.3的特性传lambda给既有suspend又有非suspend重载时不再需要手动强转直接写suspend { }就行。函数表达式里允许return只需显式标注返回类型。之前写fun foo() return 42会报错现在没事啦。默认启用 body 中的 return 表达式特性Kotlin 2.3.0 默认启用了之前 2.2.20 中更新的一个需要-language-version 2.3的特性在 body 表达式的局部使用return。比如说fun getDisplayNameOrDefault(userId: String?): String getDisplayName(userId ?: return default)未使用返回值检查器新增了一个-Xreturn-value-checker可以提示你「调用了有意义的返回值却没用」。可以用来提前发现那种「写了一大串表达式结果却丢了」的 bug。例如funformatGreeting(name:String):String{if(name.isBlank())returnHello, anonymous user!if(!name.contains( )){// 检查器会警告这个结果被忽略了Hello, name.replaceFirstChar(Char::titlecase)!}val(first,last)name.split( )returnHello,$first! Or should I call you Dr.$last?}上面这段里if分支中构造了一段字符串却没有返回或赋值检查器就会给出「结果被忽略」的警告。默认情况下这个检查器只对被标记了MustUseReturnValues的作用域生效。想要以check模式启用的话可以在build.gradle.kts中这样写kotlin{compilerOptions{freeCompilerArgs.add(-Xreturn-value-checkercheck)}}然后通过注解来声明「这里的返回值必须被使用」。可以标记整个文件// 标记整个文件文件里的函数/类返回值若被忽略则会被检查器提示file:MustUseReturnValuespackagemy.projectfunsomeFunction():String也可以只标记某个类// 标记整个类类中所有函数的返回值如果被忽略都会被检查器提示MustUseReturnValuesclassGreeter{fungreet(name:String):StringHello,$name}funsomeFunction():Int...如果你希望对整个项目的所有返回值都进行检查可以开启full模式kotlin{compilerOptions{freeCompilerArgs.add(-Xreturn-value-checkerfull)}}在这个模式下相当于所有编译结果都隐式带上了MustUseReturnValues标记。有些函数的返回值被忽略是很正常的比如MutableList.add这类就可以用IgnorableReturnValue标记掉IgnorableReturnValuefunTMutableListT.addAndIgnoreResult(element:T):Boolean{returnadd(element)}如果只是某一处调用想压制警告又不想在函数签名上动刀可以把结果赋值给下划线变量// 这是一个「不允许忽略返回值」的函数funcomputeValue():Int42funmain(){// 这里会有警告返回值被忽略computeValue()// 这里不会有警告显式把返回值丢给一个特殊的 unnamed 变量val_computeValue()}对于我这种偶尔写 DSL 忘记 return 的人来说简直就是妥妥的保命符一张呀。显式后备字段还记不记得之前的版本想要写一个有「后备字段」的属性要怎么写private val _city MutableStateFlowString() val city: StateFlowString get() _city fun updateCity(newCity: String) { _city.value newCity }而现在可以不用这么麻烦了val city: StateFlowString field MutableStateFlow() fun updateCity(newCity: String) { // Smart casting works automatically city.value newCity }使用field ...的方式可以直接指定一个真正的后备字段方便实用这个特性是试验性的要开启它添加编译器参数-Xexplicit-backing-fieldskotlin { compilerOptions { freeCompilerArgs.add(-Xexplicit-backing-fields) } }上下文敏感解析继续打磨目前还在 Experimental这次限制了「只把密封类和当前类型的外部父类」加入上下文从而减少盲目扩散。如果你在类型运算里引进了容易撞名的类编译器会给出新 warning提示这段解析已经因为上下文分支而不再确定。Kotlin/JVM面向 Java 25编译器现在可以输出 Java 25 的字节码了。对想第一时间尝鲜新 JDK API 的同学只需把 target 设到 25 就好Gradle/IDE 也都打通了。好耶支持输出 Java 25 咯Kotlin/Native一些 Kotlin/Native 的更新喔 我对 K/N 并不是非常熟悉如果这部分有你非常感兴趣的内容不妨也去看看官方的详细内容以防有什么遗漏Swift Export 更自然虽然不太懂移动端开发不过 Swift export 这轮带来了一些看似很不错的点原生enum class终于会被映射成 Swift 的enum不用再接受那些 class 模板。Kotlin 的vararg直接翻译成 Swift 的...变参用 Swift 写调用端的时候自然顺滑。比如官方文档里给出了这样一组 Kotlin / Swift 映射// Kotlin 端enumclassColor(valrgb:Int){RED(0xFF0000),GREEN(0x00FF00),BLUE(0x0000FF)}valcolorColor.RED// Swift 端 public enum Color: Swift.CaseIterable, Swift.LosslessStringConvertible, Swift.RawRepresentable { case RED, GREEN, BLUE var rgb: Int { get } }vararg也会被翻译成 Swift 里的变长参数// Kotlin 端funlog(varargmessages:String)// Swift 端 public func log(messages: Swift.String...)要注意的是泛型vararg还没支持但至少常见日志函数、多参数工具函数都没什么影响。C 和 Objective-C 库导入进入 Beta虽说我对 Kotlin/Native 不是非常熟悉但是我知道 K/N 将 iOS 的开发放在首位也一直在跟 Swift/Objective-C 进行搏斗、改进它们之间的互调用与兼容性体验。而这次对 Swift/Objective-C 和 C 的库导入功能进入了 Beta 阶段也算是一个阶段性突破了不过当然这部分功能仍然处于实验性阶段仍然存在一些限制、以及需要标记ExperimentalForeignApi。但终归是一次进步不是吗Objective-C 头文件中块类型的默认显式参数名Kotlin 函数类型中的显式参数名现在是 Objective-C 头文件导出的默认设置改进了 Xcode 中的自动完成体验。嗯… 也是对 Objective-C 的互调用与兼容性体验的一个内容。Native 发布任务构建速度提升这个则是对 K/N 整体的开发体验的提升。官方提到根据基准测试发布构建可以快高达40%具体取决于项目大小。这些改进在针对 iOS 的 Kotlin Multiplatform 项目中最为明显。Apple 目标支持的变更iOS/tvOS 最低版本从12.0 提升到 14.0watchOS 最低版本从5.0 提升到 7.0macosX64、iosX64、tvosX64、watchosX64被降级到支持层级 3计划在 Kotlin 2.4.0 中移除 x86_64 Apple 目标支持时代在变迁、社会在进步。不过看到这些X64的平台被移到 Tier 3 还是不禁感叹TMD 我什么时候才能有钱把我这个英特尔芯片的 Mac 给换了Kotlin/WasmKotlin 2.3.0 默认为 Kotlin/Wasm 目标启用完全限定名为wasmWasi目标启用新的异常处理提案并引入 Latin-1 字符的紧凑存储。名字/异常更靠谱KClass.qualifiedName在 Wasm 目标上默认可用了之前得手动开flag而现在免配置了也不会增大二进制。wasmWasi目标改用新版异常处理提案和市面上主流 VM 的实现保持一致wasmJs还停留在 legacy 版本有需要可以自己加-Xwasm-use-new-exception-proposal。Latin-1 字符的紧凑存储以前Kotlin/Wasm 按原样存储字符串字面量数据这意味着每个字符都以 UTF-16 编码。这对于仅包含或主要包含 Latin-1 字符的文本不是最优解。从 Kotlin 2.3.0 开始Kotlin/Wasm 编译器可以以 UTF-8 格式存储仅包含 Latin-1 字符的字符串字面量了。这种优化显著减少了元数据官方数据表示这个优化Wasm 二进制文件最多缩小13%与未优化版本相比即使启用完全限定名仍可缩小8%此功能默认启用更新版本即可享受有一说一K/Wasm 还有很多可以打磨的地方。继续加油Kotlin/JS更少样板的互操作更少样板的互操作优化直接导出suspendJsExport终于不再排斥suspend了只需额外添加一个编译器参数kotlin{compilerOptions{freeCompilerArgs.add(-Xenable-suspend-function-exporting)}}之后 Kotlin 的suspend会在 JS/TS 侧自动表现成async/Promise子类覆盖也照样写async。我去史诗级更新但是似乎反而让我的编译器插件kotlin-suspend-transform-compiler-plugin的作用变小了… 欸启用之后被JsExport标记的 Kotlinsuspend函数就可以直接被 JS/TS 端当作async函数来用例如JsExportopenclassFoo{suspendfunfoo()Foo}classBarextendsFoo{overrideasyncfoo():Promisestring{returnBar}}LongArray映射到BigInt64Array给 JS Runtime 的LongArray现在会变成原生的BigInt64Array和需要 typed array 的 Web API 完全对接也能更轻松地把 Kotlin 模块暴露给外部。使用编译器参数-Xes-long-as-bigint启用它kotlin{js{// ...compilerOptions{freeCompilerArgs.add(-Xes-long-as-bigint)}}}在那之前Kotlin 会将其映射为Arraybigint。跨 JS 模块系统的统一伴生对象访问以前当使用JsExport将带有伴生对象的 Kotlin 接口导出到 JavaScript/TypeScript 时在 TypeScript 中使用该接口的方式会因模块系统ES 模块或其他而异。例如JsExport interface Foo { companion object { fun bar() OK } }调用的时候// 适用于 CommonJS、AMD、UMD 和无模块Foo.bar()// 适用于 ES 模块Foo.getInstance().bar()而现在Kotlin 统一了所有 JavaScript 模块系统的伴生对象导出。在 2.3.0 之后对于每个模块系统ES 模块、CommonJS、AMD、UMD、无模块接口内的伴生对象总是以相同的方式访问就像类中的伴生对象一样// 适用于所有模块系统Foo.Companion.bar()这个改进还顺便修复了集合类型互操作性。比如集合工厂函数必须根据模块系统以不同方式访问// 适用于 CommonJS、AMD、UMD 和无模块KtList.fromJsArray([1,2,3])// 适用于 ES 模块KtList.getInstance().fromJsArray([1,2,3])现在也改过来啦KtList.fromJsArray([1, 2, 3])此功能默认启用更新版本即可享受支持带有伴生对象的接口中的JsStatic注解之前的版本中JsStatic注解不允许在导出的带有伴生对象的接口内使用。例如以下代码会产生错误因为只有类伴生对象的成员才能用JsStatic注解JsExportinterfaceFoo{companionobject{JsStatic// 错误funbar()OK}}这种情况下你就不得不删除JsStatic并用下述方式从 JS 访问伴生对象Foo.Companion.bar()现在带有伴生对象的接口支持JsStatic注解了。你现在可以在此类伴生对象上使用此注解并直接从 JS 调用函数就像对class那样Foo.bar()此功能默认启用更新版本即可享受JsQualifier注解可用于单个函数和类以前JsQualifier注解只能在文件级别应用并要求所有外部 JS 声明放在单独的文件中。从 Kotlin 2.3.0 开始可以将JsQualifier注解直接应用于单个函数和类了就像JsModule和JsNonModule注解一样例如现在可以在同一文件中将下述外部函数代码写在常规 Kotlin 声明旁边JsQualifier(jsPackage)privateexternalfunjsFun()此功能默认启用更新版本即可享受支持 JavaScript 默认导出之前的版本中 Kotlin/JS 无法从 Kotlin 代码生成 JS 的默认导出。相反Kotlin/JS 只生成命名导出例如export{SomeDeclaration};如果需要默认导出则必须使用变通方法例如将JsName注解与default加空格作为参数JsExportJsName(default )classSomeDeclaration有一说一不看这更新文档我都不知道还有这种变通方法…而现在可以通过新注解JsExport.Default直接支持默认导出了应用于 Kotlin 声明类、对象、函数或属性时生成的 JS 会自动为 ES 模块包含export default语句效果如下exportdefaultHelloWorker;此功能默认启用更新版本即可直接使用注解JsExport.Default标准库标准库也迎来了一波转正与改进改进的 UUID 生成和解析Kotlin 2.3.0 为UUIDAPI 引入了多项改进包括解析无效 UUID 时返回null的支持生成 v4 和 v7 UUID 的新函数为特定时间戳生成 v7 UUID 的支持解析无效 UUID 时返回null的支持2.3.0 增加了一些支持返回 null 的 API 。不看后面的文档我也能猜到肯定是添加了一些结尾是orNull的 API Uuid.parseOrNull()– 解析十六进制带短横线或纯十六进制格式的 UUID 时。Uuid.parseHexDashOrNull()– 仅解析十六进制带短横线格式的 UUID 时。Uuid.parseHexOrNull()– 仅解析纯十六进制格式的 UUID 时。生成 v4 和 v7 UUID 的新函数2.3.0 引入了两个用于生成 UUID 的新函数Uuid.generateV4()和Uuid.generateV7()。Uuid.random()函数保持不变仍然生成版本 4 UUID就像Uuid.generateV4()一样。为特定时间戳生成 v7 UUID 的支持书接上文。对于 v7 UUID2.3.0 还引入了新的Uuid.generateV7NonMonotonicAt(...)函数可以使用它为特定时间点生成 v7 UUID。与Uuid.generateV7()不同Uuid.generateV7NonMonotonicAt(...)不保证单调排序因此为同一时间戳创建的多个 UUID 可能不是顺序的。这几个功能或者说 UUID API还是实验性的使用它的时候需要 optIn 注解或添加编译器参数-opt-inkotlin.uuid.ExperimentalUuidApikotlin { compilerOptions { freeCompilerArgs.add(-opt-inkotlin.uuid.ExperimentalUuidApi) } }Clock/Instant转正终于现在kotlin.time.Clock和Instant正式 Stable可以放心在公共 API 里暴露和使用了。Gradle: 新增生成源码 APIKotlinSourceSet.generatedKotlin这个新 API 可以优雅注册「生成的源码」IDE 也能区分、自动触发生成任务。简单示例如下valgentasks.register(generator){valoutputlayout.projectDirectory.dir(src/main/kotlinGen)outputs.dir(output)doLast{output.file(generated.kt).asFile.writeText(// languagekotlin fun printHello() { println(hello) } .trimIndent())}}kotlin.sourceSets.getByName(main).generatedKotlin.srcDir(gen)看起来是一个主要为了配合 KSP 的新功能。不过有一说一KSP 的源码生成的检测尤其是在 KMP 项目中的相关体验确实有些一言难尽。希望这次可以有所改善吧。Compose 编译器: Release 版也能看懂 StacktraceCompose 编译器插件现在会在 R8 混淆阶段顺便产出 group key 的 mapping搭配ComposeStackTraceMode.GroupKeys就算是 release 版的崩溃也能定位到哪个Composable块。要启用 group key stacktrace可以在初始化任何Composable内容之前加上一句Composer.setDiagnosticStackTraceMode(ComposeStackTraceMode.GroupKeys)如果这套 mapping 机制在你项目里反而带来了一些构建上的问题也可以直接在composeCompiler {}里完全关闭composeCompiler{includeComposeMappingFile.set(false)}有一说一Compose 我只是勉强会用的程度更别说调试了。破坏性变更弃用文档更新官方还列举了一些破坏变更和弃用的内容条目。不过大多数内容是弃用的并且仍然保持语言本身的向后兼容。因此如果你对这方面比较敏感或者有需求可以自行前往官方文档阅读并学习如何迁移。我比较懒就不再重新列举一遍咯官方还列举了一些有关文档内容的更新比如 KMP 的独立页面也整合进来了。不过经常翻阅官方文档的小伙伴们肯定已经发现了有兴趣的话可以直接去官方文档溜一溜尾声到这里就基本整理完啦 K/JS 能导出suspend函数以及对标准库的时间API的稳定对我个人来讲无疑是最喜欢的、也是最有帮助的。你呢你认为这次更新中有没有你心目中的「史诗级」
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

济源网站建设附近的网站设计开发

Kotaemon能否扛住高并发?压力测试数据来了 在智能客服系统逐渐成为企业标配的今天,一个现实问题摆在架构师面前:当上千名员工同时询问“年假怎么申请”“报销进度如何”,你的AI助手是优雅应对,还是直接崩溃&#xff1…

张小明 2025/12/30 13:00:28 网站建设

php网站开发学什么平台营销策略

FaceFusion与TikTok内容工厂结合:批量生成爆款视频 在 TikTok 日均新增数千万条视频的今天,单纯依靠创意和人力已经无法在流量争夺战中胜出。取而代之的,是一套高度自动化的“内容工厂”体系——它不依赖明星达人,也不靠灵光一现的…

张小明 2025/12/29 3:36:43 网站建设

网站建设与维护浙江省试题大连网站优化技术

FaceFusion本地部署指南:Windows环境配置 在AI视觉创作领域,人脸替换技术正从“炫技”走向实用。无论是短视频创作者想实现跨年龄演绎,还是影视后期需要修复老片画质,一个稳定、高效且可本地运行的人脸处理工具都显得尤为关键。F…

张小明 2025/12/30 8:30:56 网站建设

东莞网站建设外贸myeclipse怎样做网站

AutoGPT在人力资源招聘中的辅助作用:简历筛选与面试问题生成 在企业人才竞争日益激烈的今天,HR团队常常面临一个尴尬的现实:花数小时浏览上百份简历,却仍可能错过最合适的候选人;设计面试问题时,又容易陷入…

张小明 2025/12/29 3:36:39 网站建设

哪些网站可以做移动端模板网站开发的微端

生成式人工智能的浪潮正引发各领域的颠覆性变革,在学术研究这一知识生产的前沿阵地,其影响尤为显著。文献检索作为科研工作的基石,在AI技术的赋能下各大学术数据库已实现智能化升级。小编特别策划"AI科研导航"系列专题,…

张小明 2025/12/29 3:36:36 网站建设

陕西做网站找谁网页设计构思

10 个降AI率工具,自考学生必备神器! AI降重工具,自考学生的高效助手 在当前的学术环境中,越来越多的高校和考试机构开始引入AIGC检测系统,以确保论文的原创性和学术诚信。对于自考学生而言,如何在保证内容质…

张小明 2025/12/29 3:36:34 网站建设