语言风格

这里整理了 kotlin 惯用的代码风格,如果你有喜爱的代码风格,可以在 github 上给 kotlin 提 pull request 。

 

创建DTOs(POJSs/POCOs) 文件

data class Customer(val name: String, val email: String)

上述代码提供了一个包含以下功能的 Customer 类:

  • getters (and setters in case of vars) for all properties

  • equals()

  • hashCode()

  • toString()

  • copy()

  • component1()component2(), …, 等等 (请查看 Data classes)

 

 函数参数默认值:

fun foo(a: Int = 0, b: String = "") { ... }

 

过滤一个 List

val positives = list.filter { x -> x > 0 }

还可以更简洁:

val positives = list.filter { it > 0 }

 

$ 操作符给字符串中插入变量 :

println("Name $name")

 

类型实例检查:

1 when (x) {
2     is Foo -> ...
3     is Bar -> ...
4     else   -> ...
5 }

 

 

Map/List 的名值对遍历:

1 for ((k, v) in map) {
2     println("$k -> $v")
3 }

k, v 的命名可以是任何字符

 

使用 Ranges(区间):

1 for (i in 1..100) { ... }  // 闭区间: 包含 100
2 for (i in 1 until 100) { ... } // 半开区间: 不包含 100
3 for (x in 2..10 step 2) { ... }  // x自增2
4 for (x in 10 downTo 1) { ... }  // 倒序遍历
5 if (x in 1..10) { ... }   // x是否在区间

 

 

只读List

val list = listOf("a", "b", "c")

 

只读Map

1 val map = mapOf("a" to 1, "b" to 2, "c" to 3)

 

访问Map

1 println(map["key"])2 map["key"] = value

 

 lazy属性:

1 val p: String by lazy {2     // compute the string3 }

 

函数扩展:

1 fun String.spaceToCamelCase() { ... }2 3 "Convert this to camelcase".spaceToCamelCase()

 

 创建单例:

1 object Resource {2     val name = "Name"3 }

 

if 判空(null)的快捷方式:

1 val files = File("Test").listFiles()2 3 println(files?.size)

有else:

1 val files = File("Test").listFiles()2 3 println(files?.size ?: "empty")

如果为空则执行语句

1 val data = ...2 val email = data["email"] ?: throw IllegalStateException("Email is missing!")

为空则执行操作:

1 val data = ...2 3 data?.let {4     ... // execute this block if not null5 }

 

when语句里返回:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

1 fun transform(color: String): Int {2     return when (color) {3         "Red" -> 04         "Green" -> 15         "Blue" -> 26         else -> throw IllegalArgumentException("Invalid color param value")7     }8 }

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

 try/catch:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

1 fun test() {2     val result = try {3         count()4     } catch (e: ArithmeticException) {5         throw IllegalStateException(e)6     }7 8     // Working with result9 }

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

IF:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

1 fun foo(param: Int) {2     val result = if (param == 1) {3         "one"4     } else if (param == 2) {5         "two"6     } else {7         "three"8     }9 }

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

 生成器模式写法返回 Unit :

1 fun arrayOfMinusOnes(size: Int): IntArray {2     return IntArray(size).apply { fill(-1) }3 }

 

单行表达式:

fun theAnswer() = 42

相当于:

1 fun theAnswer(): Int {2     return 423 }

可以高效地与其他语法配合,是代码更简洁,如下面的 when :

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

1 fun transform(color: String): Int = when (color) {2     "Red" -> 03     "Green" -> 14     "Blue" -> 25     else -> throw IllegalArgumentException("Invalid color param value")6 }

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

 使用 With 语句可以调用一个对象里的多个方法:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 1 class Turtle { 2     fun penDown() 3     fun penUp() 4     fun turn(degrees: Double) 5     fun forward(pixels: Double) 6 } 7  8 val myTurtle = Turtle() 9 with(myTurtle) { //draw a 100 pix square10     penDown()11     for(i in 1..4) {12         forward(100.0)13         turn(90.0)14     }15     penUp()16 }

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

支持Java 7 的文件操作方式:

1 val stream = Files.newInputStream(Paths.get("/some/file.txt"))2 stream.buffered().reader().use { reader ->3     println(reader.readText())4 }

 

为声明需要泛型信息的泛型方法提供更为方便的格式:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

1 //  public final class Gson {2 //     ...3 //     public <T> T fromJson(JsonElement json, Class<T> classOfT) throws JsonSyntaxException {4 //     ...5 6 inline fun <reified T: Any> Gson.fromJson(json): T = this.fromJson(json, T::class.java)

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

 Boolean 值可以是null:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

1 val b: Boolean? = ...2 if (b == true) {3     ...4 } else {5     // `b` is false or null6 }

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

 

 转载请注明原文地址:http://www.cnblogs.com/joejs/p/6878128.html

http://www.cnblogs.com/joejs/p/6878128.html

网友评论

更多精彩分享

Manage dairy business efficiently with Milk Distribution Software-Java培训机构,青岛Java培训,青岛计算机培训,软件编程培训,seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训,Java培训Manage dairy business efficiently with Milk Distribution Software