共有 0 人关注 标签:Kotlin,共有 52 篇文章

...
并发编程: Java Futures 与 Kotlin 协程 【未翻译】

A long time ago, one had to manually start new threads to run code concurrently in Java. Not only was this hard to write, it also was easy to introduce bugs that were hard to find. Testing, reading...

计算机/ @CY2
...
在 JavaScript 中调用 Kotlin 方法 【已翻译】

Kotlin 编译器生成正常的 JavaScript 类,可以在 JavaScript 代码中自由地使用的函数和属性 。不过,你应该记住一些微妙的事情。 用独立的 JavaScript 隔离声明 为了防止损坏全局对象,Kotlin 创建一个包含当前模块中所有 Kotlin 声明的对象 。所以如果你把模块命名为 ,那么所有的声明都可以通过  对象在 JavaScript 中可用。例如: 可以在...

计算机/ @CY2
...
在 Kotlin 语言中调用 JavaScript 方法 【已翻译】

Kotlin 已被设计为能够与 Java 平台轻松互操作。它将 Java 类视为 Kotlin 类,并且 Java 也将 Kotlin 类视为 Java 类。但是,JavaScript 是一种动态类型语言,这意味着它不会在编译期检查类型。你可以通过动态类型在 Kotlin 中自由地与 JavaScript 交流,但是如果你想要 Kotlin 类型系统的全部威力 ,你可以为 JavaScrip...

计算机/ @CY2
...
在 Java 中调用 Kotlin 语言的方法 【已翻译】

Java 可以轻松调用 Kotlin 代码。 属性 Kotlin 属性会编译成以下 Java 元素: 一个 getter 方法,名称通过加前缀  算出; 一个 setter 方法,名称通过加前缀  算出(只适用于  属性); 一个私有字段,与属性名称相同(仅适用于具有幕后字段的属性)。 例如, 编译成以下 Java 声明: 如果属性的名称以  开头,则使用不同的名称映射规则:getter 的...

计算机/ @CY2
...
在 Kotlin 中调用 Java 方法 【已翻译】

Kotlin 在设计时就考虑了 Java 互操作性。可以从 Kotlin 中自然地调用现存的 Java 代码,并且在 Java 代码中也可以很顺利地调用 Kotlin 代码。在本节中我们会介绍从 Kotlin 中调用 Java 代码的一些细节。 几乎所有 Java 代码都可以使用而没有任何问题 Getter 和 Setter 遵循 Java 约定的 getter 和 setter 的方法(名...

计算机/ @CY2
...
Kotlin 的兼容性描述 【已翻译】

本页介绍 Kotlin 不同版本以及子系统的兼容性保证。 兼容性词汇表 兼容性意味着回答这个问题:对于给定的两个版本的 Kotlin(例如,1.2 和 1.1.5),为一个版本编写的代码可以与另一个版本一起使用吗?下面的列表解释了不同版本对的兼容模式。请注意,如果版本号较小(即使发布时间晚于版本号较大的版本)那么版本较旧。对于“旧版本”我们使用 OV,对于“新版本”使用 NV。 C——完全兼...

计算机/ @CY2
...
Kotlin 类型别名(从 1.1 版本开始) 【已翻译】

类型别名为现有类型提供替代名称。 如果类型名称太长,你可以另外引入较短的名称,并使用新的名称替代原类型名。 它有助于缩短较长的泛型类型。 例如,通常缩减集合类型是很有吸引力的: 你可以为函数类型提供另外的别名: 你可以为内部类和嵌套类创建新名称: 类型别名不会引入新类型。 它们等效于相应的底层类型。 当你在代码中添加  并使用  时,Kotlin 编译器总是把它扩展为 。 因此,当你需要泛型...

计算机/ @CY2
...
Kotlin 类型安全的构建器 【已翻译】

构建器(builder)的概念在 Groovy 社区中非常热门。 构建器允许以半声明(semi-declarative)的方式定义数据。构建器很适合用来生成 XML、 布局 UI 组件、 描述 3D 场景以及其他更多功能…… 对于很多情况下,Kotlin 允许检查类型的构建器,这使得它们比 Groovy 自身的动态类型实现更具吸引力。 对于其余的情况,Kotlin 支持动态类型构建器。 一个...

计算机/ @CY2
...
Kotlin 的反射 【已翻译】

反射是这样的一组语言和库功能,它允许在运行时自省你的程序的结构。 Kotlin 让语言中的函数和属性做为一等公民、并对其自省(即在运行时获悉 一个名称或者一个属性或函数的类型)与简单地使用函数式或响应式风格紧密相关。 在 Java 平台上,使用反射功能所需的运行时组件作为单独的 JAR 文件()分发。这样做是为了减少不使用反射功能的应用程序所需的 运行时库的大小。如果你需要使用反射,请确保该...

计算机/ @CY2
...
Kotlin 的注解类 【已翻译】

注解声明 注解是将元数据附加到代码的方法。要声明注解,请将 annotation 修饰符放在类的前面: 注解的附加属性可以通过用元注解标注注解类来指定:  指定可以用 该注解标注的元素的可能的类型(类、函数、属性、表达式等);  指定该注解是否 存储在编译后的 class 文件中,以及它在运行时能否通过反射可见 (默认都是 true);  允许 在单个元素上多次使用相同的该注解;  指定 该...

计算机/ @CY2
...
Kotlin 的异常处理 【已翻译】

异常类 Kotlin 中所有异常类都是  类的子孙类。 每个异常都有消息、堆栈回溯信息和可选的原因。 使用 throw-表达式来抛出异常。 使用 try-表达式来捕获异常。 可以有零到多个 catch 块。finally 块可以省略。 但是 catch 和 finally 块至少应该存在一个。 Try 是一个表达式 try 是一个表达式,即它可以有一个返回值。 try-表达式的返回值是 tr...

计算机/ @CY2
...
Kotlin 的空值安全性 【已翻译】

可空类型与非空类型 Kotlin 的类型系统旨在消除来自代码空引用的危险,也称为《十亿美元的错误》。 许多编程语言(包括 Java)中最常见的陷阱之一是访问空引用的成员,导致空引用异常。在 Java 中, 这等同于  或简称 。 Kotlin 的类型系统旨在从我们的代码中消除 。NPE 的唯一可能的原因可能是 显式调用  使用了下文描述的  操作符 外部 Java 代码导致的 对于初始化,有...

计算机/ @CY2
...
Kotlin 的操作符重载 【已翻译】

Kotlin 允许我们为自己的类型提供预定义的一组操作符的实现。这些操作符具有固定的符号表示 (如  或 )和固定的优先级。为实现这样的操作符,我们为相应的类型(即二元操作符左侧的类型和一元操作符的参数类型)提供了一个固定名字的成员函数 或扩展函数。 重载操作符的函数需要用  修饰符标记。 另外,我们描述为不同操作符规范操作符重载的约定。 一元操作 一元前缀操作符 表达式 翻译为 这个表是说...

计算机/ @CY2
...
Kotlin 的相等性 【已翻译】

Kotlin 中有两种类型的相等性: 引用相等(两个引用指向同一对象) 结构相等(用  检查) 引用相等 引用相等由 (以及其否定形式 )操作判断。 当且仅当  和  指向同一个对象时求值为 true。 结构相等 结构相等由 (以及其否定形式 )操作判断。按照惯例,像  这样的表达式会翻译成 也就是说如果  不是  则调用  函数,否则(即  是 )检查 b 是否与  引用相等。 请注意,当...

计算机/ @CY2
...
为什么 Kotlin 会是我使用的下一款编程语言 【已翻译】

一款你从来没听说过的语言 Kotlin 是一款新的编程语言,来自 JetBrains,世界上最好的 IDE 制造商。在经过大量搜索之后,我把它作为可能会在未来 5-10 年使用的一款编程语言。 我喜欢 Kotlin,同时认为它是一个非常成功的项目。有人看到我在开源工作中使用它,便要求我写一些关于它的东西,所以在这篇文章中我会解释为什么我认为 Kotlin 好。不过如果你马上使用它,就可能会遇...

计算机/ @边城, @CY2
...
为什么你必须马上用 Kotlin 开发 Android 应用 【已翻译】

Kotlin 是一个用于 JVM、Android 以及浏览器平台上的静态类型编程语言。 为什么要用 Kotlin 开发 Android 应用? 简洁 : 可大大的减少编码工作量 安全 : 避免一些诸如空指针异常的问题 功能丰富 : 可构建服务端应用、Android 应用,以前在浏览器上执行的前端代码 互操作性 : 可以 100% 利用已有的 JVM 框架,和 Java 具有 100% 的互操...

计算机/ @CY2
...
开发 Basecamp 客户端时我最喜欢的几个 Kotlin 特性 【30%】

Team Android at Basecamp recently passed a fairly big milestone — over 25% of the Basecamp 3 Android app code base now runs on Kotlin! 🎉 Github statistics for the Basecamp 3 Android app as of 5/27...

计算机/ @CY2
...
为什么你必须摒弃 Java ,全面转向 Kotlin 语言? 【已翻译】

是时候开始玩一门现代的编程语言了! 我想告诉你一个名为 Kotlin 的新的编程语言,以及为什么你要开始考虑使用它来开发你的下一个项目。我以前喜欢 Java ,但是去年我发现了 Kotlin ,只要有可能我就会用 Kotlin 来写代码。现在我实在无法想象有什么地方只有 Java 能做,而 Kotlin 不能的。 Kotlin 是 JetBrains 开发的,这是一家开发了一整套 IDEs ...

计算机/ @CY2
...
Kotlin 的 This 表达式 【已翻译】

为了表示当前的 接收者 我们使用 this 表达式: 在类的成员中,this 指的是该类的当前对象 在扩展函数或者带接收者的函数字面值中, this 表示在点左侧传递的 接收者 参数。 如果 this 没有限定符,它指的是最内层的包含它的作用域。要引用其他作用域中的 this,请使用 标签限定符: 限定的 this 要访问来自外部作用域的this(一个类 或者扩展函数, 或者带标签的带接收者...

计算机/ @CY2
...
Kotlin 的类型检查和类型转换 【已翻译】

 和  操作符 我们可以在运行时通过使用  操作符或其否定形式  来检查对象是否符合给定类型: 智能转换 在许多情况下,不需要在 Kotlin 中使用显式转换操作符,因为编译器跟踪 不可变值的 -检查,并在需要时自动插入(安全的)转换: 编译器足够聪明,能够知道如果反向检查导致返回那么该转换是安全的: 或者在  和  的右侧: 这些 智能转换 用于 when-表达式 和 while-循环 也...

计算机/ @CY2
...
Kotlin 的区间或者是范围 【已翻译】

区间表达式由具有操作符形式  的  函数辅以 in 和 !in 形成。 区间是为任何可比较类型定义的,但对于整型原生类型,它有一个优化的实现。以下是使用区间的一些示例 整型区间(、 、 )有一个额外的特性:它们可以迭代。 编译器负责将其转换为类似 Java 的基于索引的 for-循环而无额外开销。 如果你想倒序迭代数字呢?也很简单。你可以使用标准库中定义的  函数 能否以不等于 1 的任意步...

计算机/ @CY2
...
Kotlin 的集合 【已翻译】

与大多数语言不同,Kotlin 区分可变集合和不可变集合(lists、sets、maps 等)。精确控制什么时候集合可编辑有助于消除 bug 和设计良好的 API。 预先了解一个可变集合的只读 视图 和一个真正的不可变集合之间的区别是很重要的。它们都容易创建,但类型系统不能表达它们的差别,所以由你来跟踪(是否相关)。 Kotlin 的  类型是一个提供只读操作如 、等的接口。和 Java 类...

计算机/ @CY2
...
使用jOOQ在Kotlin里编写SQL的10个不错的例子 【未翻译】

Kotlin is the next big thing. With Google announcing official support for Kotlin on Android, we’ll see a lot more traction for this lovely language. After today's #kotlin announcement, we're bettin...

计算机/ @班纳睿
...
为什么Kotlin比你正在使用的任何愚蠢的语言都要棒? 【已翻译】

先来点噱头,问个问题,互联网如果没有它将会是怎样的? 答案会让你大吃一惊! 但是说实话,我并不是有意要贬低你最喜欢的语言。 毕竟,你选择的语言可能正在以缓慢的步伐变得越来越好。 不是吗?如果你的语言还没死,那么它慢慢也会变得越来越好,当然如果它还在维护更新的话。 然而,到底有多慢呢?... 如果你正在使用的是Java语言,那么你应该意识到这一点,那就是当Java成为一个相当好的语言时,你就早...

计算机/ @班纳睿
...
Kotlin 解构声明 【已翻译】

有时把一个对象 解构 成很多变量会很方便,例如: 这种语法称为 解构声明 。一个解构声明同时创建多个变量。 我们已经声明了两个新变量: 和 ,并且可以独立使用它们: 一个解构声明会被编译成以下代码: 其中的  和  函数是在 Kotlin 中广泛使用的 约定原则 的另一个例子。 (参见像 和 、for-循环等操作符)。 任何表达式都可以出现在解构声明的右侧,只要可以对它调用所需数量的 com...

计算机/ @CY2
...
Kotlin 的协程 【已翻译】

在 Kotlin 1.1 中协程这个特性还处于实验性阶段。详见下文 一些 API 启动长时间运行的操作(例如网络 IO、文件 IO、CPU 或 GPU 密集型任务等),并要求调用者阻塞直到它们完成。协程提供了一种避免阻塞线程并用更廉价、更可控的操作替代线程阻塞的方法:协程挂起。 协程通过将复杂性放入库来简化异步编程。程序的逻辑可以在协程中顺序地表达,而底层库会为我们解决其异步性。该库可以将用...

计算机/ @CY2
...
Kotlin 内联函数 【已翻译】

使用高阶函数会带来一些运行时的效率损失:每一个函数都是一个对象,并且会捕获一个闭包。 即那些在函数体内会访问到的变量。 内存分配(对于函数对象和类)和虚拟调用会引入运行时间开销。 但是在许多情况下通过内联化 lambda 表达式可以消除这类的开销。 下述函数是这种情况的很好的例子。即  函数可以很容易地在调用处内联。 考虑下面的情况: 编译器没有为参数创建一个函数对象并生成一个调用。取而代之...

计算机/ @CY2
...
Kotlin 的高阶函数和 Lambda 表达式 【已翻译】

高阶函数 高阶函数是将函数用作参数或返回值的函数。 这种函数的一个很好的例子是 ,它接受一个锁对象和一个函数,获取锁,运行函数并释放锁: 让我们来检查上面的代码: 拥有函数类型:, 所以它应该是一个不带参数并且返回  类型值的函数。 它在 try-代码块内部调用、被  保护,其结果由函数返回。 如果我们想调用  函数,我们可以把另一个函数传给它作为参数(参见函数引用): 通常会更方便的另一种...

计算机/ @CY2
...
Kotlin 的函数定义和使用 【已翻译】

函数声明 Kotlin 中的函数使用 fun 关键字声明 函数用法 调用函数使用传统的方法 调用成员函数使用点表示法 中缀表示法 函数还可以用中缀表示法调用,当 他们是成员函数或扩展函数 他们只有一个参数 他们用  关键字标注 参数 函数参数使用 Pascal 表示法定义,即 name: type。参数用逗号隔开。每个参数必须有显式类型。 默认参数 函数参数可以有默认值,当省略相应的参数时使...

计算机/ @CY2
...
Kotlin 的委托和委托属性 【已翻译】

类委托 委托模式已经证明是实现继承的一个很好的替代方式, 而 Kotlin 可以零样板代码地原生支持它。 类  可以继承一个接口 ,并将其所有共有的方法委托给一个指定的对象:  的超类型列表中的 by-子句表示  将会在  中内部存储。 并且编译器将生成转发给  的所有  的方法。 委托属性 有一些常见的属性类型,虽然我们可以在每次需要的时候手动实现它们, 但是如果能够为大家把他们只实现一次...

计算机/ @CY2