首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin 1.2 新增特性

actual 声明或是 API 平台相关实现,或是在外部 API 现有实现别名引用。...例如,当一个 lambda 作为构造函数参数传递给一个对象时,后者可以用于引用另一个必须稍后定义对象: lateinit修饰符现在可以用在顶级属性和局部变量上。...例如,当作为构造函数参数传递给一个对象 lambda 引用另一个对象时,稍后必须定义对象可以使用: 循环中值:1, 2, 3, 1, 2, 3, 1, ......标准 Kotlin 标准 artifacts 及拆分包 Kotlin 标准现在完全兼容 Java 9 模块系统,它会禁止对包进行拆分(多个 jar 包文件在同一个包声明类)。...工具 警告视为错误 编译器现在提供了所有警告视为错误选项。在命令行中使用 -Werror,或使用以下 Gradle 代码

2.8K70
您找到你想要的搜索结果了吗?
是的
没有找到

From Java To Kotlin:空安全、扩展、函数Lambda很详细,这次终于懂了

Kotlin 定义类在默认情况下是 public 。 编译器会帮我们生成“构造函数”, 对于类当中属性,Kotlin 编译器也会根据实际情况,自动生成 getter 和 setter。...而函数调用则执行函数本身。因此,可以函数引用传递给其他函数,并在需要时执行。...Kotlin对此并没有进行限制,但是通常不建议在Lambda 表达式编写太长代码,否则可能会影响代码可读性。 Lambda也可以理解为是匿名函数简写。...,参数列表结尾使用一个 '->' 符号 ,表示参数列表结束以及函数开始,函数可以编写任意行代码,并且最后一行代码会自动作为Lambda表达式返回值。...--- Kotlin 引入高阶函数会带来几个好处:一个是针对定义方,代码减少了接口类定义;另一个是对于调用方来说,代码也会更加简洁。

1.2K80

Kotlin 1.2 新增了哪些特性?

actual 声明或是 API 平台相关实现,或是在外部 API 现有实现别名引用。下面是一个示例: 在通用代码: ? 在 JVM 平台中,代码如下所示: ?...例如,当一个 lambda 作为构造函数参数传递给一个对象时,后者可以用于引用另一个必须稍后定义对象: lateinit修饰符现在可以用在顶级属性和局部变量上。...例如,当作为构造函数参数传递给一个对象 lambda 引用另一个对象时,稍后必须定义对象可以使用: ? 循环中值:1, 2, 3, 1, 2, 3, 1, ......标准 Kotlin 标准 artifacts 及拆分包 Kotlin 标准现在完全兼容 Java 9 模块系统,它会禁止对包进行拆分(多个 jar 包文件在同一个包声明类)。...确保与新模块系统兼容另一个更改是从 kotlin-reflect 移除 kotlin.reflect 包弃用声明。

2.8K10

Xamarin 技术全解析

Android Callable Wrappers(ACW) 使用C#开发Android应用程序在运行时候,C#代码是在Mono虚拟机执行,而Mono虚拟机是寄宿在Dalvik虚拟机运行,所有的...C#代码都通过ACW方式被调用。...Managed Callable Wrapper(MCW) 如果需要在C#调用一些系统功能或者Java实现,该如何调用那?...答案就是MCW,MCW就是一个JNI桥梁,可以使用托管代码调用Android代码。MCW整个Android.* 以及相关命名空间通过 jar绑定方式暴露出来,是的C#可以调用。...3.2 Xamarin.iOS 实现原理 对于开发者来说,Xamarin.IOS相对于Xamarin.Android就要简单很多了,我们用C#开发iOS应用程序在被编译成IL代码之后,然后转交给Apple

5.9K70

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

基准测试(编译 YouTrack 和 Kotlin 编译器本身)表明,新前端速度约为现有前端快 4.5 倍。 统一后端和可扩展性 在前端完成对代码分析之后,后端生成可执行文件。...通过SAM转换可以Java对SamType调用,转换为一个对Lambda调用,减少大量模板代码,但是同样SamType如果定义在Kotlin,是无法转换: interface Action...这个特性使得我们可以直接重用我们代码,并将其迁移到 Kotlin。由于Java互操作性几乎无处不在。...4.函数式编程 Kotlin 语言一等支持函数式编程,就像Scala一样。具备高阶函数Lambda 表达式等函数式基本特性。...5.默认和命名参数 在Kotlin,您可以为函数参数设置一个默认值,并给每个参数一个名称。这有助于编写易读代码

1.2K10

Kotlin 程序设计》第十二章 Kotlin多线程

Kotlin 设计关键特性是协程执行实现是语言一部分, 而不是语言一部分,所以你不必绑定任何特定编程范式或并发。 协程实际上是一个轻量级线程,可以挂起并稍后恢复。...标准通过 yield 和 yieldAll 函数使用协程来支持惰性生成序列。 在这样序列,在取回每个元素之后挂起返回序列元素代码块, 并在请求下一个元素时恢复。...lambda 表达式解构 现在可以使用解构声明语法来解开传递给 lambda 表达式参数。...考虑那个典型 HTML 构建器示例: table { tr { td { +"Text" } } } 在 Kotlin 1.0 ,传递给 td lambda 表达式代码可以访问三个隐式接收者...如果该映射是用 withDefault 生成,这个函数返回默认值,而不是抛异常。

3.2K10

国内 Mono 相关文章汇总

其中,C#编译器对C# 3支持已经完整;标准方面,WinForms 2.0API已经完整支持,LINQ和ASP.NET支持也比之前更为完善;执行引擎开始共享泛型代码后占用内存量减少了,同时Mono...[开始学习Mono] 开源Mono框架C#编程带到iPhone、Android和Wii SuperSocket系列文档(18) 在Unix/Linux操作系统通过Mono运行SuperSocket...ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据 关于asp.net利用mono部署到Linux上一些说明 xamarin绑定原生一些坑...+Mysql配置心路历程 asp.netashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题 在Linux上运行ASP.NET vNext Xamarin技术文档------VS...通知详解 Xamarin.Android广播接收器与绑定服务 Xamarin.Android之ActionBar与菜单 绿色版Linux.NET——“Jws.Mono”(续) 如玫瑰一般PHP

11.2K60

《Kotin 极简教程》第8章 函数式编程(FP)(2)

严格面向对象观点,使得很多问题解决方案变得较为笨拙。为了一行有用代码包装到Runnable或者Callable 这两个Java中最流行函数式示例,我们不得不去写五六行模板范例代码。...为了让事情简单化(在Java 8,增加Lambda表达式支持),我们在Kotlin中使用普通函数来替代函数式接口。事实上,函数式编程函数,比C语言中函数或者Java方法都要强大多。...,显式声明返回类型是可选: fun double(x: Int) = x * 2 8.2.7 函数作用域 在 Kotlin 函数可以在文件顶层声明,这意味着你不需要像一些语言如 Java、C# 或...然后重点介绍了在Kotlin如何使用函数式风格编程,其中重点介绍了Kotlin函数相关知识,以及高阶函数Lambda表达式、闭包等核心语法,并给出相应实例说明。...我们将在下一章 中介绍Kotlin 轻量级线程:协程(Coroutines)相关知识,我们看到在Kotlin,程序逻辑可以在协程顺序地表达,而底层会为我们解决其异步性。

1.8K20

Kotlin委托

Kotlin中有委托,这个C#也有,不过对于学Java童鞋来说,这是什么鬼啊,到底是干什么用… 在委托模式,当有两个对象参与处理同一个请求是,接受请求对象请求委托给另一个对象来处理。...委托模式已证明是实现继承一个很好替代方式。Kotlin中委托分为类委托和委托属性,Kotlin官方也封装了一些常用委托。...两函数都需要用 operator 关键字来进行标记。 翻译规则 在每个委托属性实现背后,Kotlin 编译器都会生成辅助属性并委托给它。...例如,对于属性 prop,生成隐藏属性 prop$delegate,而访问器代码只是简单地委托给这个附加属性: class C { var prop: Type by MyDelegate(...标准委托 延迟属性 Lazy lazy() 是接受一个 lambda 并返回一个 Lazy 实例函数,返回实例可以作为实现延迟属性委托: 第一次调用 get() 会执行已传递给 lazy()

1.4K30

Kotlin 反应式编程》使用 RxKotlin 实现一个极简 http DSL ( Reactive Programming Using Rx Kotlin )《Kotlin 反应式编程》使用

Rx Kotlin ) 我们现在已经基本知道 Kotlin DSL 样子了。...OkHttp 是一个成熟且强大网络,在Android源码已经使用OkHttp替代原先HttpURLConnection。...这样写法可能比较难以理解,这个函数字面量 init 调用实际上是 init.invoke(wrap) ,就是把传入 ajax 函数参数直接传递给 wrap 。...为了更简单理解这个 init 函数工作原理,我们通过把上面的 ajax 函数代码反编译成对应 Java 代码如下: public static final void ajax(@NotNull...Kotlin 扩展函数和高阶函数Lambda 表达式),为定义Kotlin DSL提供了核心特性支持。 使用DSL代码风格,可以让我们程序更加直观易懂、简洁优雅。

1.7K20

玩转Kotlin 彻底弄懂Lambda和高阶函数

更确切说:Lambda是一个未声明函数,会以表达式形式传递 为什么要用Lambda 设想一下,在Android实现一个View点击事件,可以使用如下实现: View view = findViewById...) } 可以很明显看出Lambda一方面可以简省很多代码,最重要一点是Lambda表达式可以避免在抽象类或接口中编写明确函数声明,进而也避免了类实现部分(省去了OnClickListener接口这一环节...答案见1楼 Lambda传递使用 在我们需要使用这两个Lambda表达式时候可以直接sum1、sum2传递给一个高阶函数(稍后讲解),或者也可以直接=之后表达式传递给高阶函数, 具体如下所示:...最后这个高阶函数自己返回类型是Int值 使用高阶函数 定义好了一个高阶函数之后,我们就可以一个Lambda递给这个高阶函数,完整实例如下所示: fun highOrderFunc(arg1: Int...{ } } Lambda表达式也可以传递给一个高阶函数当做参数,因此上述代码 view.setOnClickListener(imageClick), = view.setOnClickListener

3K10

kotlin实战教程之lambda编程

前言 ambda即lambda表达式,简称lambda。本质上是可以传递给其它函数一小段代码。有了lambda,可以轻松地把通用代码结构抽取成库函数lambda最常见用途是和集合一起配合。...在kotlin可以使用::把函数转换成一个值,从而传递给函数。...带接收者lambda: with 与 apply 这两个函数kotlin标准函数。带接受者是指:在lambda函数体可以调用一个不同对象方法,而且无须借助任何额外限定符。...: fun foo_(){ print("a") } 从上面这个例子可以看出,作为参数lambda表达式会被直接替换到最终生成代码,而不是被包含在一个实现了函数接口匿名类。...注意如果lambda参数在某个地方被保存起来,以便后面可以继续使用,这种lambda表达式将不会被内联,因为必须要有一个包含这些代码对象存在 内联集合操作 kotlin标准map、filter

71630

第10章 使用 Kotlin 创建 DSL第10章 使用 Kotlin 创建 DSL

Kotlin 创建 DSL , 一般主要使用下面3个特性: 扩展函数、扩展属性 带接收者 Lambda 表达式(高阶函数) invoke 函数调用约定 例如上面的示例 UI {...}...,可以foo.invoke()简写成foo(),在 kotlin 操作符是可以重载,()操作符对应就是类重载操作符函数 invoke。...而实际上在Kotlin ,在类对象实例上我们也可以像函数那样直接使用 () 操作符来调用这个类一个 invoke 操作符函数。用代码示例来说明可能会更加简单直接。...") Hello, Kotlin 这段代码在 Hello 类定义了一个操作符函数invoke,然后我们声明了一个 Hello 类实例对象 hello, 接下来神奇事情发生了 hello("World...Kotlin 扩展函数和高阶函数Lambda 表达式),为定义Kotlin DSL提供了核心特性支持。 使用DSL代码风格,可以让我们程序更加直观易懂、简洁优雅。

1.3K20

浅谈Kotlin函数

自己一样,在KotlinCollection就是这么干。...7.Lambda表达式 Lambda本质上是可以传递给其他函数一小段代码,可以当成值到处传递 Lambda表达式以左大括号开始,以右大括号结束,箭头->分割成两边,左边是入参,右边是函数体。...,可以放到括号外边; 当Lambda函数唯一实参时,可以去掉调用代码空括号; 和局部变量一样,如果Lambda参数类型可以被推导出来,就不需要显示指定。...从编译器角度看,Lambda是一个代码块不是一个对象,不能把它当成对象引用。Lambdathis引用指向是包围它类。 如果在Lambda要用到常规意义上this呢?这个就需要带接收者函数。...toString() } with返回值是执行Lambda代码结果,该结果是Lambda最后一个表达式值。如果想返回是接收者对象,而不是执行Lambda结果,需要用apply函数

2.5K20

Flutter与Xamarin跨平台移动开发对比

您还可以使用Flutter Libraries来实现用于从Dart调用原生函数。 lutter iOS和Android结构 在XamarinC#代码被编译成机器代码,然后打包在.app。...mono生成器使用针对Xamarin.Android应用程序JIT编译和针对iOS应用程序AoT编译中间机器代码(也称为托管代码)编译为本机平台代码。...Xamarin通过绑定使用.NET API和特定于平台来访问本机功能。...开发人员还可以访问本地功能,如第三方SDK和,并重用现有的本机代码(Swift,Objective C,Java和Kotlin)。...Xamarin问题之一是与第三方集成,这似乎在Flutter更好地实现。 开发人员技能 Xamarin允许共享大约96%C#代码,但如果您选择完全本机体验,则必须使用一些特定于平台代码

3.5K20

Kotlin 初体验:主要特征与应用

递给这个函数lambda表达式需要一个参数,使用it作为这个参数默认名称。如果age属性为null,Elvis运算符(?:)会返回零。...可以轻易地这段逻辑公 共部分提取到一个函数,并将其他不同部分作为参数传递给它。这些参数本身也是函数,但你可以使用一种简洁语法来表示这些匿名函数,它被称作 lambda 表达式 : ?...lambda 表达式,让你用最少样板代码方便地传递代码块 数据类,提供了创建不可变值对象简明语法 标准包括了丰富 API 集合,让你用函数式编程风格操作对象和集合 Kotlin 允许你使用函数式编程风格但并没有强制你使用它...常见开发任务,比如给控件添加监听器或是把布局元 素绑定到字段,可以用更少代码完成,有时甚至根本不用写任何代码(编译器会帮你生成)。...Kotlin 编译器生成代码执行起来和普通 Java 代码效率一样。Kotlin 使用运行时()体积相当小,所以编译出来应用程序包体积也不会增加多少。

84230

Kotlin | 5.lambda 编程

log = { println(42) }() // 可以使用库函数 run 来运行传给它lambda,运行lambda代码kotlin.run { println...转换成函数式接口-------------*/ // SAM构造方法是编译器生成函数,让你执行从lambda函数接口实例显示转换。...* buildString 函数优雅地完成了借助StringBuilder创建String任务。 */ 总结 Lambda 允许你把代码块当作参数传递给函数。...Kotlin 可以把 lambda 放在括号外传递给函数,而且可以用 it 引用单个lambda 参数。 lambda 代码可以访问和修改包含这个 lambda 调用函数变量。...通过在函数名称前加上前缀 :: ,可以创建方法、构造方法及属性引用,并用这些引用代替 lambda递给函数

84010

《Kotin 极简教程》第14章 使用 Kotlin DSL第14章 使用 Kotlin DSL《Kotlin极简教程》正式上架:

Kotlin 创建 DSL , 一般主要使用下面两个特性: 扩展函数、扩展属性 带接收者 Lambda 表达式(高阶函数) 例如上面的示例 UI {...}...代码凌乱模板引擎标签、变量等片段代码。...使用 Kotlin DSL 来写 HTML 代码情况完全不一样了,我们重拾前后端集成编码乐趣(不再是模板引擎套前端 HTML,各种奇怪 #、、${} 模板语言标签),我们直接把 更加优雅简单...DSL 风格HTML 代码搬到了后端,同时HTML元素直接跟后端数据无缝交互,而完成这些只是 Kotlin(当然,相应领域 DSL 基本语义模型还是要学习一下)。...Kotlin 扩展函数和高阶函数Lambda 表达式),为定义Kotlin DSL提供了核心特性支持。 使用DSL代码风格,可以让我们程序更加直观易懂、简洁优雅。

2.1K10

C#移动跨平台开发(2)Xamarin移动跨平台解决方案是如何工作

对于一些只读系统,所有虚拟机实例都和Zygote共享一块内存区域。   大家注意第2点和第7点有助于我们理解Xamarin.Android工作机制。...在Java代码以native式式invoke,就像invoke其它C或者C++代码一样。   Momodroid.exe 在编译阶段会为我们C#生成对应ACW。...Xamarin.Android Framework中有很多就是MCW,关于MCW创建以及C#与Java集成开发东西我们后面再细讲,包括一个C#开发Android应用程序是如何被启动,我们后面再细讲...Xamarin.IOS 架构   对于开发者来说,Xamarin.IOS相对于Xamarin.Android就要简单很多了,我们用C#开发ios应用程序在被编译成IL代码之后,然后转交给Apple complier...就目前来看C#来开发IOS应用更具有优越性,我们要在VS开发Iphone应用程序需要配一台Mac来做编译。

2.6K110
领券