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

Kotlin 编码规约

源文件组织 鼓励多个声明(类、顶级函数或者属性)放在同一Kotlin 源文件,只要这些声明在语义彼此紧密关联并且文件保持合理大小(不超过几百)。...冒号 在以下场景 : 之前留一个空格: 当它用于分隔类型与超类型时; 当委托给一个超类构造函数或者同一另一个构造函数时; 在 object 关键字之后。...将密切相关多个参数分在同一。...Lambda 表达式格式化 在 lambda 表达式,应该在花括号左右以及分隔参数与代码体箭头左右留空格。如果一个调用接受单个 lambda 表达式,应该尽可能将其放在圆括号外边传入。...而在有参数嵌套 lambda 表达式,始终应该显式声明参数。 在 lambda 表达式返回 避免在 lambda 表达式使用多个返回到标签。

3K22

Rec:一个项目的诞生|洞见

Rec面向数据文件格式是类CSV文件,包括其他一些使用分号(;)或者竖线(|)来做分隔文件。...而且还有一个意外发现:用空格做分隔文件(比如,某些日志)也是可以支持。 对于每一条数据,Rec提供了两部分组件,一部分是数据本身,另一部分是该数据访问器(accessor)。...exist: Order.prod_id, Product.id 每一表示一个规则,冒号前面是规则名字,后面是规则所需要验证数据查询表达式。...对于查询表达式,这里需要提一点,本来是设计了更多功能,比如过滤和组合等等,在后面扩展时候发现在语法很难实现得更直观而且方便使用,于是就决定改用嵌入脚本引擎方式来解决。...如何在过滤器设计变量引用等细节?

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

Kotlin 1.4-M1 现已发布!

lambda 中最后一个表达式智能转换 在 Kotlin 1.3 ,lambda 最后一个表达式不是智能转换,除非您指定预期类型。...现在,它仅包含可以在所有三个目标平台(JVM、JS、Native)使用成员,这样您就可以确保同一代码可以用于任何一个平台。 use() 和时间测量函数新协定 我们将在标准库扩大协定使用。...在以下示例,可以将 String 类型 @Foo 注解发出到字节码,然后由库代码使用: 有关如何在字节码中发出类型注解详细信息,请参阅 Kotlin 1.3.70 版本博文相关部分。...Kotlin 和 Swift 之间错误处理存在着根本区别。所有 Kotlin 异常都未经检查,而 Swift 只包含检查错误。...分享您反馈 如果您发现错误并在 YouTrack 问题跟踪器中报告,我们将不胜感激。我们将尽力在最终版本之前修复所有重要问题,也就是说,您不用等到下一个 Kotlin 版本即可看到问题得到解决

3.4K20

【翻译】Kotlin致简代码之路

那就是所谓致简代码!使用 Kotlin ,我们可以用更少代码( 15 对比 6 )最少形式主义前提下达到业务逻辑实现。...更加好是,这个变量是不能被修改( final )。使用 Kotlin try 表达式,我们在减少一同时还能让变量做到不可变( val )。...在 Java 一个解决方案就是把 try 分解成子程序。尽管我们可以给这个子程序一个具有很好描述性名称,但有时候还是有点过头了。 单函数表达式 另外一个很贴心特性是单函数表达式。...第二, Kotlin 支持命名式参数,这明显提升了代码可读性和健壮性。我们再也不会意外地混淆了具有相同类型参数了。 而且,我们还能够通过使用属性缩写访问语法来访问这些属性值。...除了这些,我还能发现 Kotlin 在对象和数据结构(通过数据类)以及并行性( Kotlin 1.1 协程 )改进。但是 Martin 书籍覆盖了更多主题: ?

1.4K30

linux bash shell 特殊字符大全

; 作为多语句分隔符(Command separator [semicolon])。 多个语句要放在同一时候,可以使用分号分隔。注意,有时候分号需要转义。...这个是用在正则表达式一个特殊分隔符,用来标记单词分界。比如:the会匹配there,another,them等等,如果仅仅要匹配the,就可以使用这个词界符,\就只能匹配the了。...在正则表达式,表示是其前这个匹配规则匹配最少一次; 3.在命令或过滤器作为选项标记,在某些命令或者内置命令中使用+来启用某些选项,使用-来禁止; 4....这个是用在正则表达式一个特殊分隔符,用来标记单词分界。...在正则表达式,表示是其前这个匹配规则匹配最少一次; 3.在命令或过滤器作为选项标记,在某些命令或者内置命令中使用+来启用某些选项,使用-来禁止; 4.

6.4K30

31 天,从浅到深轻松学习 Kotlin

这只是替换空作为值或者返回事件情况一个小语法。 Day 3:String 模板 格式化字符串?将$放在变量名前面去表达字符串变量和表达式使用 ${expression} 求表达式值。...Day 5:循环,范围表达式与解构 for 循环在与其他两种 Kotlin 特性一起使用时可以获得超级能力:范围表达式和解构。...Day 13:从 Java 编程语言调用 Kotlin同一个项目中使用 Kotlin 和 Java?您有没有顶级功能或属性课程?默认情况下,编译器将生成类名称 YourFileKt。...Android Kotlin 另一个 DSL 是 Anko。Anko 允许您使用声明性代码构建 Android 视图。...Android KTX 允许您使用默认参数在视图一侧设置填充。一代码可以节省很多代码!

2.2K30

Kotlin、Swift、Scala 延迟求值

只有使用时才会初始化,这个看上去简单逻辑,通常我们在 Java 当中会写出来非常啰嗦,延迟初始化也经常因为各种原因变成“忘了”初始化,导致程序出现错误。 这一切在 Kotlin 当中变得非常简单。...整体比较起来,Scala 对延迟求值做了语言级别的正式支持,因此语法更省事儿,有些情况下代码显得也更自然。 哦,对了,例子缩水问题其实也是有办法解决,哪有 Scala 解决不了问题呢。。。...BooleanByName valueByName 是一个函数,Scala 当中对于不修改类内部状态无参函数通常声明成没有括号样子,这样函数调用时如同访问属性一样( 代码 _.valueByName...) -> Bool) in condition() },不难看出,in 是用来分隔参数列表和表达式,condition 是参数,它类型是 () -> Bool。...Lambda 表达式包装对 returnFalse 函数调用;后面的两个参数直接使用函数名传入,这类似于 Kotlin 当中函数引用用法。

1.7K20

灵活运用inline和crossinline来优化代码

在这篇文章,我们将探讨inline和crossinline使用,以及如何在Kotlin使用它们来提高代码质量和可读性。 什么是inline? inline是一个用于函数关键字。...crossinline是另一个用于函数关键字。在Kotlin,如果一个函数参数被标记为crossinline,那么这个函数参数不能在函数体中使用return语句进行非局部返回。...这个函数接受一个lambda表达式作为参数,并使用crossinline关键字进行标记。在函数体,我们编写了一些代码,并在适当位置调用了callback函数。...这个函数接受一个lambda表达式作为参数,并使用crossinline关键字进行标记。在函数体,我们编写了一些代码,并在适当位置调用了callback函数。...在使用inline和crossinline时,需要注意它们限制和用法。希望这篇文章能够帮助你学习如何在Kotlin使用inline和crossinline。

18620

Kotlin实战【二】Kotlin基本要素

另外一方面,在Java赋值是表达式,但是在Kotlin变成了语句。这有效避免了比较和赋值之间混淆,这个混淆也是错误一个来源。 1.2.2 表达式函数体 可以让前面的函数变得更简单。...表达式函数在Kotlin代码很常见,不光用在一些简单函数,也用在许多复杂表达式:if、when、try等,后续介绍 1.2.3 类型推导 我们max函数还可以进一步简化,如下:...作为一个静态类型语言,Kotlin不是要求每个表达式都应该在编译期具有类型吗?事实,每个变量和表达式都有返回类型。...如果其他文件在同一包下,里面所有的定义可以直接使用;如果这些定义在不同包里面,那么他们需要导入。就像在Java,导入语句放置在文件开头,使用import关键词。...在字符串前加上或者或者或者{}包围一个表达式,来把值注入到字符串。 实体类(值对象类)在Kotlin以更简单方式表示。 在kotlin,可以把多个类放在同一个文件,文件名字还可以随意选择。

1.1K20

Kotlin | 6.Kotlin 类型系统

: throw IllegalArgumentException("No address") // 使用with函数避免在这一重复使用四次address...* 所有这些变动都在同一个简洁表达式。 * let 函数做所有事情就是把一个调用它对象编程lambda表达式参数。 */ // foo?....并不区分基本数据类型和包装类型,使用永远是同一类型:(:Int) val i: Int = 1 val listOf: List = listOf(1, 2...Java 类型在 Kotlin 中被解释成平台类型,允许开发者把它们当作可空或非空来对待。 表示基本数字类型( Int )看起来用起来都像普通类,但通常会被编译成 Java 基本数据类型。...可空基本数据类型( Int ?)对应着 Java 装箱基本数据类型(java.lang.Integer )。 Any 类型是所有其他类型超类型,类 Java Object 。

2.3K10

Kotlin学习之路(2)数据类型

【变量】 (1)分隔Kotlin语言中分号 花括号({ )} 方扩号( [ ] ) 原点( .)都具有分隔意义。...在 Kotlin 语言中有两个由编译器定义特定标识符,它们只能在特定场景中使用有特定作用,而在其他场景可以做标识符使用。...简单来说Kotlin不支持范围小数据类型隐式转为取值大类型。在Kotlin不允许通过Java前缀表达式来强制转换类型!...Sting str = orgin.get(number).toString() (3)字符串模板及其拼接 Kotlin允许字符串嵌套变量或者表达式,我们只要把变量或者表达式放进${ }中就OK了,...= str.toIntOrNull() 第二代码num类型为Int,第三代码num类型为Int? 。程序执行第二代码无法编译,而第三代码能通过编译。其中Int?

75220

转向Kotlin——基础知识

:在Kotlin,数据类型要放到变量之后,并用 冒号(:)分隔,这一点和Java正好相反; 变量常量关键字:在Kotlin变量使用var开头,定义常量使用val开头; 数据类型首字母:Kotlin...F或f,12.3F 表示十六进制,在数值前面加0x,0x1F 表示二进制没在数值前面加0b Kotlin还提供数值分隔符,使用下划线(_)分隔,可以根据具体情况进行分隔,举个例子,1000000表示一百万...模板使用美元符号 $ 设置,“i=$i”,其中$i就是一个占位符,其中 $ 后面的i是变量,还可以用${表达式}来作占位符。...当然,在Kotlin,if和when不仅可以作为语句使用,还可以当作表达式使用。...1、条件语句 Kotlin,if语句本身就是表达式,有返回值,因此Kotlin不会有如Java那样三木运算符。

1.1K10

Kotlin初探

Kotlin语法,语句结尾都不在有分号“;”。 在Kotlin变量声明有两种类型,val修饰变量是只读变量即只能赋值一次,再次赋值时就会编译错误 ,如果我们需要多次修改值就需要使用var。...在Kotlin表达式也可以作为函数体,编译器可以推断出返回类型,可以简化为 为了更好理解表达式可以作为函数体,我们可以创建一个函数获取两个数最大值,如下: 需要注意是若if后有多个表达式,如下...: 括号表达式顺序决定了返回值及其类型。.../仅在同一个文件可见 protected //同一个文件或子类可见,不可修饰类 public //所有调用地方都可见 internal //同一个模块可见,若类不加修饰符,则默认为该修饰符...实现代码: Kotlin数据类: 通过对比我们就看出了优点了,一代码就实现了,具体使用 要获取某个属性获取名字staff.name,赋值就是staff.name="code4Android2",

1.6K20

JavaScript里分号,你加还是不加?

在JavaScript,如果语句各自独占一,通常可以省略语句之间分号(程序结尾或者右“}”之前分号也可以省略。)...因此,在编写JavaScript程序时,一般会有两种编码习惯,加分号 和 不加分号 : 加分号: 许多程序员使用分号来明确标记语句结束,即使在并不完全需要分号时候也是如此; 不加分号: 另一种风格是...,则语句结尾分号可以省略,JavaScript在解析时会自动填补分号,例如: let x = 10 let y = 20 console.log(x+y) //3 如果写在同一,则必须要加分号...如果将其作为表达式后缀的话,它和表达式应该在同一,否则,JavaScript会在行末添加添加分号,并且 ”++“ "--"会被作为下一句前缀操作符与下一句一起解析。...: x ++ y 这段代码解析为: x; ++y; 而不是: x++;y; 4.使用分号好处 加上分号可以避免很多错误(例如,不完整输入),开发人员可以放心通过删除多余空格来压缩代码

1.6K11

每天学点JavaScript基础(2)——JavaScript里分号,你加还是不加?

在JavaScript,如果语句各自独占一,通常可以省略语句之间分号(程序结尾或者右“}”之前分号也可以省略。)...因此,在编写JavaScript程序时,一般会有两种编码习惯,加分号 和 不加分号 : 加分号: 许多程序员使用分号来明确标记语句结束,即使在并不完全需要分号时候也是如此; 不加分号: 另一种风格是...,则语句结尾分号可以省略,JavaScript在解析时会自动填补分号,例如: let x = 10 let y = 20 console.log(x+y) //3 如果写在同一,则必须要加分号: let...如果将其作为表达式后缀的话,它和表达式应该在同一,否则,JavaScript会在行末添加添加分号,并且 ”++“ "--"会被作为下一句前缀操作符与下一句一起解析。...: x ++ y 这段代码解析为: x; ++y; 而不是: x++;y; 4.使用分号好处 加上分号可以避免很多错误(例如,不完整输入),开发人员可以放心通过删除多余空格来压缩代码; 加上分号在某些情况下可以增进代码性能

81911

27 个问题,告诉你Python为什么这么设计

如果您习惯于阅读和编写使用一种风格代码,那么在阅读(或被要求编写)另一种风格时,您至少会感到有些不安。 许多编码风格将开始/结束括号单独放在一。...# do something with line 不允许在 Python 表达式赋值原因是这些其他语言中常见、很难发现错误,是由这个结构引起: if (x = 0) { // error...因为第二使用 [1, 2] id 与第一 id 不同。...当你意外忘记或修改列表时,这将产生程序一类难以跟踪错误。它还使一个重要字典不变量无效:d.keys() 每个值都可用作字典键。 将列表用作字典键后,应标记为其只读。...如果列表,元组或字典字面值分布在多行,则更容易添加更多元素,因为不必记住在上一添加逗号。这些也可以重新排序,而不会产生语法错误。 不小心省略逗号会导致难以诊断错误

6.6K11

关于 Kotlin REPL 两条小贴士

本文只讲关于 Kotlin REPL 两条 tips: 如何运行 REPL; 如何在 REPL 查看推断出类型。...运行独立 REPL 命令行 某些情况下,我们并不适合使用 IDEA 内置 Kotlin REPL,比如在远程 Linux 服务器,比如需要在 Windows 下输出汉字时,再如不需要运行项目相关代码并希望少占资源时...这些情况下都更适合使用独立 Kotlin REPL 命令行。 如果本机已安装较新版本 IDEA,想要运行 Kotlin REPL 就只需找到它然后运行它即可。...如何在 Kotlin REPL 查看推断出类型 昨天看了 Benny 新发文章《val b = a?: 0,a 是 Double 类型,那 b 是什么类型?》...当在 REPL 对 f 求值时,REPL 输出了该 lambda 表达式类型。

2.3K10

Saleforce 基于 Kotlin 构建数据管道探索和实践

为了解决 Java 在数据管道方面的这些缺点,我们选择了 Kotlin 作为后端开发替代方案。 1为什么是 Kotlin?...在 Java 中使用 Kotlin 接口也几乎不存在摩擦,并且我们在 Kotlin 实现 API 还被其他使用 Java 团队用上了。...对属性一流支持:我们不需要编写 get/set 方法,因为 Kotlin 为属性提供了一流支持,第 5 和第 6 所示。...使用 when 构造详尽模式匹配:从第 8 开始,Kotlin when 表达式对枚举值和 case 类进行详尽模式匹配。...4迁移到 Kotlin 后为我们带来好处 当其他团队使用我们库时,Kotlin 数据类和不变性确保了一致性(防止意外数据损坏)。

73910
领券