kotlin: ::符号_Kotlin月刊1:各种功能

kotlin: ::符号

要打开“ Kotlin月”,我们将查看Kotlin的一小部分功能,这些功能不足以值得自己写文章,也不适合将要发布的文章归类,从操作员重载开始。

运算符重载

由于它在C ++中造成的混乱,Java决定不包括运算符重载 ,并且不幸的是,它坚持了这一决定,大概是因为人们对此没有足够的恶臭。 如果大多数Java程序员对这种语言没有太多/任何经验,这是有道理的,我认为目前可能是这种情况。

我的观点是,不是C ++中的问题专门用于运算符重载。 问题在于可以自由支配发明所需的任何运营商。 从技术上讲,这在Kotlin中仍然是可能的(请参阅下一个功能),但是在这种情况下仍然很难滥用。 显然,运算符仍然可以被滥用和使用,而这并不是编程所必须的,但这几乎适用于编程中的所有内容。

无论如何,我真的很喜欢使用适当的运算符来提高功能的可读性和简洁性,因此很高兴。

中缀“运算符”方法

通过对函数使用中缀表示法 ,Kotlin可以扩展可用的“运算符”列表,而不会陷入C ++通过将其限制为合法方法名称的困境。 这样一来,他们就避免了编码人员使用没有内在含义的符号,从而使人们更有可能破译操作符的含义(假设其名称正确)。

对于那些考虑插入其功能之一的人,我要指出的一个观点是,在将它们链接在一个流畅的接口中的情况下,您不应使用它们。 区分对象和运算符可能会变得非常困难,因为它们只是一堆标识符。 该规则的潜在例外是内部DSL,该DSL打算在类似配置的文件中使用。

在大多数情况下,我认为该功能不会被大量使用,但是我绝对可以看到足够的用例,使其成为Kotlin的宝贵组成部分。

流媒体

在所有语言的所有功能中,能够声明性地过滤,映射和缩小集合可能是我一直以来的最爱。 为此,Kotlin并不令人失望。 由于需要编译为Java 6,他们没有自动访问新的Stream API的权限,因此他们制作了自己的本质,称为Sequence 。 基本上是相同的想法,但不支持并行进行工作。 幸运的是,它通过使用更多的方法来弥补这一不足。 不仅如此,集合本身(甚至迭代器)具有与Sequence相同(或至少相似)的方法集,因此您不必使Stream或Sequence实例执行简单的过滤器或地图。 不幸的是,从集合或迭代器进行调用非常渴望并且通常会立即创建一个List。 那就是Sequence的目的:使其变得懒惰。

真的很喜欢它们:1)使Iterators可迭代(这意味着您可以像在Python中一样将Iterators直接放入for循环中; iterator()方法仅返回“ this”)和2)可以从迭代器中调用流方法也是如此,因此您不需要一个急切创建的集合。

同样, 范围允许快速创建数字以进行迭代,并检查其中是否包含值。

字符串是可迭代的!

资料类别

数据类是在Kotlin中制作类似于bean的的快速,简便的方法。 通过用“数据”注释一个类,它将使用在主构造函数中定义的所有属性来定义toString(),hashCode(),equals()和组件函数 。 它还创建了一个很棒的copy()方法

在较旧的文章中,我尝试为Python重新创建它,然后有人评论说它几乎已经作为命名元组存在了:P

奥托罗

我可以不断地进行下去,因为Kotlin与Java所做的不同之处通常都很好,但是我可能会深入研究所有细节,而无聊。 如果您想了解更多信息,请查看我的其他Kotlin文章或查看Kotlin的出色参考页

下周,我将对Kotlin关于继承,特殊情况和默认设置的决定大加赞赏。

翻译自: https://www.javacodegeeks.com/2016/02/kotlin-month-post-1-assorted-features.html

kotlin: ::符号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值