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

Kotlin、Swift、Scala 的延迟求值

不过随着了解的深入,发现二者虽然看起来很像,但用起来差异太大了,至少在延迟求值这个语法特性的设计上,Swift 形式上更像 Scala。...参数 conditions 前面的下划线,一般语言的参数都只有参数名,也就是 conditions,Swift 还有一个参数标签的概念,用于函数调用时指定(其实我们在 Kotlin 当中调用函数时也可以在参数前加参数名...,但作为位置参数时不强制),用下划线可以省略掉这个标签。...简单总结一下,Swift 通过 lazy 关键字来实现类属性的延迟求值,这一点写法上虽然与 Scala 很像,但只能修饰类或结构体的成员,而且是可读写的成员;Swift 同样可以通过传入函数的形式来支持函数参数的延迟求值...,可以通过 @autoclosure 来简化调用过程中参数的写法,这一点其实从形式上与 Scala 的传名参数类似。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JVM下的Scala和Kotlin

    写在前面 在JVM生态下流行的语言有好几种,最出名的应该就是Scala和Kotlin了。最近准备除了Java本身之外在学习一种JVM生态下的语言,Scala和Kotlin都是候选语言。...我在写Spark相关程序时用过Scala,在我自己的业余项目中在尝试Kotlin和Go,两者都在不同的方向创出了一片天,Scala已经成了大数据领域的明星,Kotlin最开始在Android平台得到了官方的大力支持...Kotlin一眼看上去和Scala很像,都是源于对于Java的改良,同时在面向对象和面向函数之间做了桥梁,Kotlin作为后来者不可否认在Scala身上学到了很多。...最后 如果在Kotlin和Scala之间做选择的话,我毫无疑问会选择Kotlin。 作为自家孩子Kotlin永远是IDEA的头等公民,得到IDE的相当大的支持。...Spring本身对于Kotlin的支持比对于Scala的支持也更强,当然如果你是大数据编程方向,Scala很长时间还会是你的首选。 当然如果进一步推荐的话,还是Kotlin+Go都尝试下吧。

    2.1K20

    【OpenGrok代码搜索引擎】四、OpenGrok使用指南

    +“clause” “-”表示查询子句内容是忽略的;形如-“clause” “:”表示查询子句针对一个域的搜索;形如文件类型type:c 一个子句也有可能是下面这些形式: 一个词语,表示查询所有包含该词语的文档...例如搜索(1+1):2,完整的搜索字符串如下: \(1\+\)\:2 需要特别注意的是索引字符主要是数字,字母和下划线,一个字符是无法进行索引。...haskell=Haskell, hcl=HCL, jar=Jar, java=Java, javaclass=Java class, javascript=JavaScript, json=Json, kotlin...=Kotlin, lisp=Lisp, lua=Lua, mandoc=Manual pages, pascal=Pascal, perl=Perl, php=PHP, plain=Plain Text..., plsql=PL/SQL, powershell=PowerShell script, python=Python, r=R, ruby=Ruby, rust=Rust, scala=Scala,

    3.3K20

    比较Go、Rust、Scala、Java、Kotlin、Python、Typescript 和 Elm中的编译器错误

    开发人员的生产力受多种因素影响。我们比较了 Go、Rust、Python、Typescript、Scala 和 Java 中的编译器消息。...译自 Comparing Compiler Errors in Go, Rust, Scala, Java, Kotlin, Python, Typescript, and Elm,作者 Stephan...语言 编译器消息 Java 非常简短的编译器错误,措辞令人困惑 Scala 良好的编译器错误,显示了有问题的数值 Kotlin 简短、不清楚的错误消息 Python 运行时错误,简短但比 Java 更清晰的措辞...为此,我们比较 Rust (1.64.0) Go (1.18.2) Python (3.8.5) Elm (0.19.1) Java (19 Amazon) Scala (3.2.0) Kotlin (...此外,构建 Android 应用程序的人使用 Kotlin。简短而简单的错误消息,但 unresolved reference: notThere 对我来说比 Java 的更糟糕。

    15010

    Kotlin 编码规约

    命名规则 Kotlin 遵循 Java 命名约定。尤其是: 包的名称总是小写且不使用下划线(org.example.myproject)。...(请注意,Android 运行时目前不支持这样的方法名。)测试代码中也允许方法名使用下划线。...对于枚举常量,可以使用大写、下划线分隔的名称(enum class Color { RED, GREEN })也可使用以大写字母开头的常规驼峰名称,具体取决于用途。...理由:与构造函数参数一致 对于由单个表达式构成的函数体,优先使用表达式形式。...如果一个方法会改动其接收者,那么不要声明为中缀形式。 工厂函数 如果为一个类声明一个工厂函数,那么不要让它与类自身同名。优先使用独特的名称,该名称能表明为何该工厂函数的行为与众不同。

    3.2K22

    Python 里最具代表性的符号,竟如此强大

    在不同场合下,下划线有不同含义:比如_var表示内部变量;__var表示私有属性;__var__表示魔术方法;这些含义有的是程序员群体的约定,如_var;有的是 Python 解释器规定的形式,如__var...1.5 大数字表示形式 _也可用于数字的分割,这在数字比较长的时候常用。 >>> a = 9_999_999_999 >>> a 9999999999 a 的值自动忽略了下划线。...PEP8推荐的导入方式是from XXX import aVar , b_func , c_func这种形式。...只是这种修改,只是一种杂耍般的操作,并不可取。 五、__var__用于魔术方法 变量前面两个下划线,后面两个下划线。这是 Python 当中的魔术方法,一般是给系统程序调用的。...这就是魔术方法的功效:支持系统调用,改进用户类表现,增加协议支持,使用户类表现得更像系统类。 5.1 Python魔术方法分类 以下所有魔术方法均需要在前后加上__,这里省略了这些双下划线。

    77720

    Scala和Kotlin脚本编程

    Scala和Kotlin脚本编程 Scala和Kotlin作为运行在JVM上的编程语言,解决了Java的很多痛点。...今天我们来聊聊如何将Scala和Kotlin作为脚本语言使用(Java不支持以脚本形式运行哦)。...可以看到和Kotlin脚本程序一样不需要主函数,Scala脚本同样以args参数接收用户输入(args是一个Array[String]类型的数组) 在命令行执行:scala Main.scala 高寒...调用外部命令 在Scala中可以调用Java方法,我们可以直接使用上面类似Kotlin的方式,但是Scala中为我们提供了更加便捷的方法来调用外部命令或程序,下面我们来看一下吧!...Scala和Kotlin脚本编程的异同 Scala脚本的扩展名和执行方式和普通Scala类一样;Kotlin脚本的扩展名为kts,执行的时候需要加-script参数 Scala提供了对于外部命令调用的快捷方法

    1.7K10

    StarUML 免注册码 Mac OS

    2.x standard compliant Entity-Relationship diagram (ERD) Data-flow diagram (DFD) Flowchart diagram Multiple...Kotlin 简介 Kotlin是一门非研究性的语言,它是一门非常务实的工业级编程语言,它的使命就是帮助程序员们解决实际工程实践中的问题。...在 JVM 生态不断发展繁荣的过程中,也诞生了Scala、Groovy、Clojure 等兄弟语言。 Kotlin 也正是 JVM 家族中的优秀一员。...Kotlin是一种现代语言(版本1.0于2016年2月发布)。它最初的目的是像Scala那样,优化Java语言的缺陷,提供更加简单实用的编程语言特性,并且解决了性能上的问题,比如编译时间。...4.函数式编程 Kotlin 语言一等支持函数式编程,就像Scala一样。具备高阶函数、Lambda 表达式等函数式基本特性。

    3.4K41

    第2章 Kotlin 语法基础第2章 Kotlin 语法基础

    而具体存放的数据占用内存的大小和存放的形式则由其类型来决定。 在Kotlin中, 所有的变量类型都是引用类型。Kotlin的变量分为 val (不可变的) 和var (可变的) 。...因为事实上在程序中大部分地方只需要使用不可变的变量。使用val变量可以带来可预测的行为和线程安全等优点。 变量名就是标识符。标识符是由字母、数字、下划线组成的字符序列,不能以数字开头。...在 Kotlin 中,if 是一个表达式,即它会返回一个值(跟Scala一样)。...() -> kotlin.Int 这点跟Scala是不同的。...在这里,Kotlin跟Scala在大括号的使用上,是完全不同的。 然后,调用函数方式是直接调用invoke()函数:sumf(1,1).invoke()。

    2.7K20

    kotlin, 一种新的android平台一级开发语言

    这让我对kotlin产生了极大的好奇心,这种能让得到google如此宠幸的语言到底是何方神圣? 在网上查了相关资源后, 对kotlin有了粗略的了解。...kotlin非常的年轻, 第一个版本是在2011年正式发布的 kotlin是jetbrains公司开发的语言, JB公司驰名世界,生产的IDE雄霸天下, 和宇宙第一的visual studio也没有正面冲突...在我之前的认知中,开发程序代码混编, .net平台应该在这方面实践处于领导地位, 我们可以用f#写一个模块, 编译成.dll组件, 然后在c#项目中调用, 这也算一种代码混编的形式,但却不能在一个project...而像c#、f#、haskell、scala之类的语言就像是降龙十八掌、六脉神剑、凌波微步、北冥神功一样,使将出来往往是挥掌炸山头,手指放激光,不但威力奇大, 而且招式出人意料,跟少林寺那些绝技相比, 不知道高到哪去了...kotlin具备很多FP的特性, 但又不像scala那样复杂难学,并且编译速度和java一样比scala快的多, 所以可以说汲取了java和scala的优点,但又摒弃它们的缺点。

    1.2K80

    Kotlin 标识符、关键字和注释

    构成标识符的字符均有一定的规范,Kotlin 语言中标识符的命名规则如下: 区分大小写:Myname 与 myname 是两个不同的标识符。 首字符,可以是下划线(_)或字母,但不能是数字。...除首字符外其他字符,可以是下划线(_)、字母和数字。...在 Kotlin 语言中有两个由编译器定义的特定标识符,它们只能在特定场景中使用有特定的作用,而在其他的场景中可以做标识符使用。...关键字 关键字是类似于标识符的保留字符序列,由语言本身定义好的,Kotlin 语言中有 70 多个关键字,全部是小写英文字母,以及 ! 和 ? 等字符构成。...// This is an end-of-line comment /* This is a block comment on multiple lines. */ Kotlin 中的块注释可以嵌套

    39220

    Chapi —— 一个通用语言元信息转换器

    来,一起用高效(hard way)的方式学习多种编程语言,Kotlin + Scala、Python、Go、Java、TypeScript、C#…… Chapi 起源 为了向开源重构与分析工具 Coca...结合疫情的影响,我结束了打苍蝇为乐的休息时间,在月初(2020.2.1)便启动了 Chapi 项目的开发,使用的语言是 Kotlin。...在过去的半个月里,我在这个项目上编写了大量的代码,一些有意思的内容、特性如下所示: 完全 TDD 的项目。只有充分的测试,才能保证语法解析不出错。 Kotlin 语言。...Java 是 Antlr 框架的一等公民,Kotlin 是 JVM 系,更加简洁。 主流编程语言支持。...已经完全支持 Java 语言,支持 Python、Go、TypeScript 的数据结构解析,正在支持 Scala、C 和 C# 语言。 插件化支持。

    68820

    Java: 未来已来

    包括: 正在实现的: JEP 302 Lambda Leftovers: 对lambda功能的补强, 比如下划线变量等BiFunctionbiss = (i, _) -> String.valueOf(...i);, lambda参数的Shadowing,消除一些歧义等修补工作 JEP 305 Pattern Matching: 这个功能非常好,Scala和kotlin中的模式匹配非常强大,这个jep提供了类似的功能...Bodies: 正常的方法定义以大括号包裹,这个特性提供了类似Lambda表达式简化方式的形式,直接单行定义方法体, 类似C#和kotlin的特性: class MyList implements...,感觉虽然还没有达到Scala那么灵活,已经很不错了 JEP 323 Local-Variable Syntax for Lambda Parameters (JDK 11): 对本地变量的类型推断的加强...值类型:提供不可变类型和非引用类型的支持。不可变类型在Scala中很常用,java中也会引进这中类型。使用这种类型有很多好处,一个就是可以显著地提高性能,因为数据不可变,你也不必担心同步更新的问题。

    47210

    Scala基础——高阶函数

    = hello world 匿名函数 不需要给每个函数命名,可以使用匿名函数,匿名函数的定义形式,称为“Lambda表达式”。...“Lambda表达式”的形式如下: (参数) => 表达式 //如果参数只有一个,参数的圆括号可以省略 (num: Int) => num +1 把匿名函数存放到变量中,addFunc是计算2个数的和,...下面是在Scala解释器中的执行过程: scala> val addFunc = (a:Int,b:Int) => a+b addFunc: (Int, Int) => Int = $$Lambda$1052...占位符语法 使用下划线作为一个或多个参数的占位符,只要每个参数在函数字面量内仅出现一次。...,当采用下划线的表示方法时,对于列表list中的每个元素,都会依次传入用来替换下划线,首先传入1,然后判断1>3是否成立,如果成立,就把该值放入结果集合,如果不成立,则舍弃,接着再传入2,然后判断2>3

    39720

    Kotlin实战【四】迭代事物:while和for

    do {//无条件的执行一次,之后当条件为真时执行 /*...*/ } while (condition) 2、for循环 for循环仅以一种形式存在,和java的for-each循环一致 Java...){ print(i) } 3、数字迭代:区间和数列 kotlin中没有java的常规循环,所以kotlin使用了区间的概念 区间本质:两个值之间的间隔。...使用 ..来表示 例: val oneToTen = 1..10 注意:kotlin区间是闭合的,意味着第二个值始终是区间的一部分 如果你能迭代区间中所有的值,这样的区间叫做数列 举个例子使用不带参数的...Scala") //和“Java” Kotlin” && “Kotlin” Scala”一样 //true 字符串在这里是按字母比较的,因为那是String类是这样实现Comparable...in同样适用于集合 println(“Kotlin” in setOf(“Java”, “Scala”,“hello”)) //这个集没有“Kotlin”字符串 //false kotlin不包含在集合里面

    1.2K20

    Java : 未来已来

    包括 正在实现的 JEP 302 Lambda Leftovers:对lambda功能的补强, 比如下划线变量等 BiFunction biss = (...i, _) -> String.valueOf(i); lambda参数的Shadowing,消除一些歧义等修补工作 JEP 305 Pattern Matching:这个功能非常好,Scala 和 Kotlin...Method Bodies: 正常的方法定义以大括号包裹,这个特性提供了类似 Lambda 表达式简化方式的形式,直接单行定义方法体,类似 C# 和 Kotlin 的特性: class MyListScala那么灵活,已经很不错了 JEP 323 Local-Variable Syntax for Lambda Parameters (JDK 11):对本地变量的类型推断的加强...不可变类型在 Scala 中很常用,Java 中也会引进这中类型。使用这种类型有很多好处,一个就是可以显著地提高性能,因为数据不可变,你也不必担心同步更新的问题。

    56320
    领券