Kotlin基础4

别再手动找触点了!EPLAN线圈触点映像的3种显示方式与F键/Ctrl+B快捷键实战 本文详细解析EPLAN线圈触点映像的3种显示方式与F键/Ctrl+B快捷键实战技巧,帮助电气设计工程师提升图纸操作效率。通过精简编号、路径栏显示和元件旁可视化三种模式的应用场景对比,结合快捷键肌肉记忆训练法,实现触点快速定位与管理,大幅减少手动查找时间。 阅读详情

函数内联:(预编译指令、宏定义,宏替换)

在JVM上,你定义的lambda会以对象实例的形式存在,JVM会为所有同lambda打交道的变量分配内存,这就产生了内存开销。更糟的是,lambda的内存开销会带来严重的性能问题。幸运的是,kotlin有一种优化机制叫内联,有了内联,JVM就不需要使用lambda对象实例了,因而避免了变量内存分配。哪里需要使用lambda,编译器就会将函数体复制粘贴到哪里。

使用用lambda的递归函数无法内联,因为会导致复制粘贴无限循环,编译会发出警告。

函数引用:

要把函数作为参数传给其他函数使用,除了传lambda表达式,kotlin还提供了其他方法,传递函数引用,函数引用可以把一个具名函数转换成一个值参,使用lambda表达式的地方,都可以使用函数引用。

fun main() {
    showOnBoard("笔记本",::getDiscountWords)
}

private fun getDiscountWords(goodsName: String,hour: Int):String{
    val currentYear = 2017
    return "${currentYear}年,双11${goodsName}促销倒计时$hour 小时"
}

private fun showOnBoard(goodsName: String, getDiscountWords: (String, Int) -> String) {
    val hour = (1..24).shuffled().last()
    println(getDiscountWords(goodsName, hour))
}

函数类型作为返回类型:

fun main() {
    var configDiscountWords = configDiscountWords()
    println(configDiscountWords("沐浴露"))
}

fun configDiscountWords(): (String) -> String{
    return { goodsName: String ->
        val currentYear = 2027
        val hour = (1..24).shuffled().last()
        "${currentYear}年,双11${goodsName}促销倒计时: $hour 小时"
    }
}

闭包:(作用域的保护、Package、Class、模块)

在Kotlin中,匿名函数能修改并引用定义在自己的作用域之外的变量,匿名函数引用着定义自身的函数里的变量,Kotlin中的lambda就是闭包。

能接收函数或者返回函数的函数又叫做高级函数高级函数广泛应用于函数式编程当中。

lambda与匿名内部类:

为什么要在代码中使用函数类型?函数类型能让开发者少写模式化代码,写出更灵活的代码。Java 8支持面向对象编程和lambda表达式但不支持将函数作为参数传给另一个函数或变量,不过Java的替代方案是匿名内部类。

可空性:

对于null值问题,Kotlin反其道而行之,除非另有规定,变量不可为null值,这样一来,运行时崩溃从根源上得到解决。

Kotlin的null类型:(?可空类型)

var str:String? = "butterfly"
    str = null

安全调用操作符:(?.)

 println(str?.capitalize())

使用带let的安全调用

fun main() {
    var str:String? = "butterfly"
    str = ""
    str?.let {
        //非空白的字符串
        if(it.isNotBlank()){
            it.capitalize()
        }else{
            "butterfly"
        }
    }
    println(str)
}

非空断言操作符(!!.)

!!.又称感叹号操作符,当变量值为null是,会批出KotlinNullPointerException。

    str = null
    println(str!!.capitalize())

YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml 全网最详细的YOLOv5源码解读之配置文件yaml。逐行注释,逐句讲解,一文带你了解yaml。小白必看! 阅读详情

相关推荐

避开STM32中断优先级配置的坑:HAL_NVIC_SetPriority()参数你真的用对了吗?

本文深入解析STM32中断优先级配置中的关键问题,重点剖析HAL_NVIC_SetPriority()函数的正确使用方法。通过实际案例揭示优先级分组设置、抢占优先级与子优先级的区别,提供多中断系统中的优化策略和调试技巧,帮助开发者避免常见配置错误,提升系统稳定性。

weixin_42532938的博客 423

ANTLR Kotlin:将 Kotlin 作为 ANTLR 4 的目标语言

ANTLR Kotlin:将 Kotlin 作为 ANTLR 4 的目标语言 1. 项目基础介绍及主要编程语言 ANTLR Kotlin 是一个开源项目,旨在支持将 Kotlin 语言作为 ANTLR 4 的目标语言。ANTLR(Another Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它被广泛用于构建语...

gitblog_01071的博客 316

鸿蒙子系统解读-分布式软总线子系统初步研究(下)

鸿蒙子系统解读-分布式软总线子系统初步研究(下) 本文作者:江苏润和软件股份有限公司 郎建中 3.2. 数据传输 上一节我们看了PublishService()函数的代码实现过程。被发现端发布服务后,软总线回调发布成功的函数中,被发现端需要使用CreateSessionServer()来创建会话的服务器等待发现端的连接创建会话。下面我们就来分析CreateSessionServer()函数的实现过程。 数据传输部分的代码位于foundation/communication/services/softbus

weixin_47070198的博客 3090

Kotlin4noobs 开源项目教程

Kotlin4noobs 开源项目教程 1. 项目介绍 Kotlin4noobs 是一个开源项目,旨在帮助初学者快速上手 Kotlin 语言。该项目提供了基础的 Kotlin 代码示例和解释,让新手能够通过实际编码来学习 Kotlin 的语法和特性。 2. 项目快速启动 要快速启动 Kotlin4noobs 项目,请遵循以下步骤: 首先,确保你的开发环境中已安装了 Kotlin 插件。你可以通过以...

gitblog_00001的博客 561

IC芯片验证 - 手把手教你搭建UVM验证环境

这是一个UVM的demo项目

howard789的博客 3万+

Surface Pro 4/5/6/7保姆级黑苹果安装:从Windows分区到OC引导配置全流程(含EFI文件替换避坑)

本文详细介绍了在Surface Pro 4/5/6/7上安装黑苹果的全流程,包括Windows分区、OC引导配置和EFI文件替换等关键步骤。通过实战经验分享,帮助用户避开常见陷阱,实现Windows与macOS双系统完美共存,特别适合对黑苹果安装感兴趣的Surface Pro用户。

weixin_30300225的博客 1373

kotlin4noobs:助力编程新手快速掌握Kotlin语言

kotlin4noobs:助力编程新手快速掌握Kotlin语言 项目介绍 在编程语言的世界中,Kotlin 以其简洁、高效和跨平台的特性逐渐受到广大开发者的青睐。然而,对于编程新手而言,学习一门新的编程语言并非易事。kotlin4noobs 就是在这样的背景下诞生的一个开源项目,旨在为编程新手提供一个学习 Kotlin 语言的学习平台,帮助他们在编程的道路上迈出第一步。 项目技术分析 kotlin...

gitblog_00125的博客 998

【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板

NPU(Neural Processing Unit) 是专门用于人工神经网络推理与训练的处理器,具备高并行、低功耗、低延迟等特点。它是边缘 AI、自动驾驶、智能摄像头、语音识别等场景中的关键硬件。

moton2017的博客 2250

Kotlin1.4-M1发布啦,终于支持Kotlin interface SAM转换了!

Kotlin 1.4的第一个预览版终于发布了,有哪些新亮点和功能呢?一文带你一探究竟!

zwluoyuxi的专栏 1786

Vue - 在纯 HTML 普通项目中实现组件化,让原生 html 项目支持引入 *.vue 组件 / 组件与组件间的互相引用等,完美解决了引入组件出现的跨域问题(保姆级详细教程,完整示例源码及插件)

html中使用vue组件,在HTML页面中引入vue组件,HTML界面利用http-vue-loader.js以组件方式引入vue文件,使用http-vue-loader引入组件出现报错,在html页面使用http-vue-loader插件引入组件报跨域错误,如何解决http-vue-loader引用组件时出现跨域问题,纯html原生web项目引入vue后如何实现组件引入,使用http-vue-loader插件控制台报错跨域,http-vue-loader跨域怎么办官方文档,html页面如何引入.vu

🏆 前端领域优质创作者 3907

汇川Easy系列PID_AT指令弹簧质量阻尼系统闭环控制仿真测试

汇川Easy系列PLC系统PID指令(温度控制PID应用编程)

RXXW_Dor的博客 764

Kotlin 1.4及以后 - 我们可以期待什么?

Kotlin 1.4及以后 - 我们可以期待什么?在KotlinConf 2019上,JetBrains的CTO Andrey Breslav讨论了Kotlin的发展方向。Kotlin ...

成富的专栏 255

一套C#接口通吃安川/发那科/库卡:工业机器人统一控制框架设计与产线踩坑实录

我们把机器人的通用能力抽象为接口,涵盖连接、运动、IO、寄存器、状态、报警六大类能力,所有品牌适配器都必须实现这个接口。/// 工业机器人统一控制接口// 基础连接// 运动控制// IO与寄存器// 状态与报警// 事件工业机器人统一控制框架的本质,不是把所有品牌的功能都做平,而是找到通用能力的最大公约数,通过分层抽象把品牌差异隔离在底层。上层业务只关注工艺和流程,不需要关心机器人是什么品牌、用什么SDK、通信协议是什么。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 404

Kotlin 1.4将推出更快的编译器

Kotlin 1.4的计划是对2020年语言的升级,其中包括重新实现编译器以提高执行速度。 JetBrains的Kotlin开发人员认为, Kotlin 1.4的重点应该放在“质量和性能”上,而不是添加“大”功能。 JetBrains承诺新的编​​译器实现“将非常快,统一Kotlin支持的所有平台,并提供用于编译器扩展的API。” [ 同样在InfoWorld上:什么是Kotlin?...

cxu0262的博客 289

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

《Kotlin4noobs 项目安装与配置指南》

《Kotlin4noobs 项目安装与配置指南》 1. 项目基础介绍 kotlin4noobs 是一个开源项目,旨在帮助初学者学习 Kotlin 编程语言。Kotlin 是一种跨平台的编程语言,可以用来编写 Android 应用、服务器端应用、客户端应用以及JavaScript代码。本项目通过一系列教程和示例代码,让初学者能够快速上手 Kotlin。 2. 项目使用的关键技术和框架 本项目主要使用...

gitblog_00002的博客 790

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Kotlin1.4新特性

Kotlin 1.4 来了!全新语言特性和更多改进 发布人:开发技术推广工程师 Wojtek Kaliciński 来自开发者社区的热情与积极采用推动了 Kotlin 成为 Android 开发的 首选语言 (Kotlin-first)。随着 Kotlin 不断发展,JetBrains(Kotlin 的创建者)、开源社区以及 Google 团队也将持续投入更多的资源和精力。 我们很高兴与大家分享 Kotlin 1.4 版本,这将是 Kotlin 发展的下一个里程碑,包含新的语言特性、改进的编译器和工具。以

hpc_kiven的博客 816

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

K4Kotlin 项目常见问题解决方案

K4Kotlin 项目常见问题解决方案 项目基础介绍和主要编程语言 K4Kotlin 是一个旨在减少 Android 开发中 Kotlin 代码冗余的开源项目。它提供了一系列的 Kotlin 扩展函数,帮助开发者简化常见的 Android 开发任务,从而提高开发效率。该项目的主要编程语言是 Kotlin,适用于 Android 平台的开发。 新手使用项目时需要注意的3个问题及解决步骤 问题1:依赖...

gitblog_00037的博客 844

Kotlin 1.4改进了空检查功能

Kotlin 1.4是JetBrains创建的对静态类型JVM语言的计划升级,旨在添加空检查优化。 从Kotlin 1.4发行版开始,所有运行时检查都将引发java.lang.NullPointerException而不是KotlinNullPointerException , IllegalStateException , IllegalArgumentException和TypeCas...

cxu0262的博客 382

Kotlin 1.4更新以及一些小技巧及解析介绍

可以在JetBrains 官方博客中阅读有关 Kotlin 1.4 的更多信息。JetBrains 官方博客https://blog.jetbrains.com/zh-hans/kot...

Android技术之家 1578

Kotlin 1.4有望获得更快的编译器

Kotlin 1.4的计划是对语言的升级,该计划将于2020年到期,其中包括重新实现编译器以提高执行速度。 JetBrains的Kotlin开发人员认为, Kotlin 1.4的重点应该放在“质量和性能”上,而不是添加“大”功能。 JetBrains承诺,新的编译器实施将“非常快,统一Kotlin支持的所有平台,并提供用于编译器扩展的API。” [另请参阅: 为什么选择Kotlin?...

cxu0262的博客 232

K4Kotlin 项目教程

K4Kotlin 项目教程 1. 项目的目录结构及介绍 K4Kotlin 项目的目录结构如下: K4Kotlin/ ├── app/ │ ├── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── livinglifetechway/ │ │ │ ...

gitblog_00881的博客 521

Shotcut 关键帧完全解析:35 种插值曲线 + 2 种模式,让滤镜动画平滑可控

给片头 LOGO 加一个"淡入再向左滑出"的动画,你多半经历过默认线性过渡那种机械的匀速感。Shotcut 的关键帧(Keyframe)系统解决的就是这件事:它在时间线上给滤镜参数打点,再用你选定的缓动曲线自动补全中间值。掌握下面这套机制,位置、缩放、旋转、透明度这些参数都能做出有呼吸感的运动。 [![可用于关键帧动画的动效图形元素示例](https://raw.gitcode.com/gh_m

gitblog_00317的博客 82

Kotlin 1.4 版本正式发布:新功能一覽

2020年 8 月 17 日,Kotlin 1.4 版本正式发布。此次的版本更新花费了很多精力来提高 Kotlin 及其工具的性能和质量,例如高亮显示的速度提高了 1.5-4 倍,支持多种新的语言功能,例如 Kotlin 接口 SAM 转换。 在过去的一年中,超过 580 万开发者都曾使用过 Kotlin 编码,这个数据比上一年增加了 1.5 倍,而且还在增长。Kotlin 社区在全...

AI天才研究院 1万+

Kotlin 各版本新特性(1.4+)

Kotlin 各版本新特性一、1.4.01. 支持SAM语法2. 带默认值的多参方法的调用优化。 一、1.4.0 1. 支持SAM语法 SAM 即 Single Abstract Method, 自打 Java 8起,lambda语法,使得java语法更加简洁。SAM就是其中的亮点之一。我们先来看一下,java的实现方式对比: interface SAM{ void test(int i); } public class Test { public static void main(

李岳锋的专栏 1312

kotlin使用Glide 4.0.0

(转载)http://www.jianshu.com/p/4e6aa2f334f9 kotlin使用Glide 4.0.0 官方链接 Gradle引用 repositories { mavenCentral() } dependencies { implementation 'com.github.bumptech.glide:glide:4.0.0' i

zhuhai__yizhi的专栏 3361

K4Kotlin 开源项目教程

K4Kotlin 开源项目教程 项目介绍 K4Kotlin 是一个旨在减少 Android 开发中 Kotlin 代码冗余的开源库。它提供了一系列的扩展函数和工具,帮助开发者更高效地编写 Kotlin 代码。K4Kotlin 包含多个模块,如核心模块、AndroidX 扩展、数据绑定扩展以及 Retrofit 扩展等,每个模块都旨在解决特定的开发需求。 项目快速启动 要开始使用 K4Kotlin,...

gitblog_00351的博客 446
上一篇: Kotlin基础3
下一篇: Kotlin基础5
LD_Round
博客等级 码龄4年 83粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值