简单的kotlin练习(ing)
2017-06-12 14:43
197 查看
fun main(args: Array<String>) { println("Hello, world!") }
fun main(args: Array<String>) { if (args.size == 0) { println("Please provide a name as a command-line argument") return } println("Hello, ${args[0]}") }
fun main(args: Array<String>) { for (name in args) { println("Hello, $name") } }
fun main(args: Array<String>) { val language = if (args.size == 0) "EN" else args[0] println(when (language) { "EN" -> "Hello!" "FR" -> "Salut!" "IT" -> "Ciao" else -> "Sorry, I can't greet you in $language yet" }) for (name in args) { println("Hello, $name") } }
class Greeter(val name: String) { fun greet() { println("Hello, ${name}") } } fun main(args: Array<String>) { Greeter(args[0]).greet() }
fun main(args: Array<String>) { println(max(args[0].toInt(), args[1].toInt)) } fun max(a: Int, b: Int) = if (a > b) a else b
fun parseInt(str: String): Int? { try { return str.toInt() } catch (e: NumberFormatException) { println("One of the arguments isn't Int") } return null } fun main(args: Array<String>) { if (args.size < 2) { println("No number supplied") } else { val x = parseInt(args[0]) val y = parseInt(args[1]) if(x != null && y != null) { println(x * y) } else { println("One of the arguments is null") } } }
fun main(args: Array<String>) { println(getStringLength("aaa")) println(getStringLength(1)) } fun getStringLength(obj: Any): Int? { if (obj is String) renturn obj.length return null }
fun main(args: Array<String>) { var i = 0 while (i < args.size) println(args[i++]) }
fun main(args: Array<String>) { for (arg in args) { println(arg) } //or println() println("===" + args.indices) for (i in args.indices) { println(args[i]) } }
fun main(args: Array<String>) { val x = args[0].toInt() //check if a number lies within a range: val y = 10 if (x in 1..y-1) println("OK") //Iterate over a range: for (a in 1..5) println("${a} ") //check if a number is out of range: println() val array = arrayListOf<String>() //val array = ArrayList<String>() array.add("aaa") array.add("bbb") array.add("ccc") println("===" + x) if (x !in 0..array.size -1) println("Out: array has only ${array.size} elements. x = ${x}") //check if a collection contains an object: if ("aaa" in array) // collection.contains(obj) is called println("Yes: array contains aaa") if ("ddd" in array) // collection.contains(obj) is called println("Yes: array contains aaa") else println("No: array doesn't contains ddd") }
fun main(args: Array<String>) { cases("Hello") cases(1) cases(0L) cases(MyClass()) cases("hello") } fun cases(obj: Any) { when (obj) { 1 -> println("One") "Hello" -> println("Greeting") is Long -> println("Long") !is String -> println("Not a string") else -> println("Unknown") } } class MyClass() { }
/*See http://kotlinlang.org/docs/reference/multi-declarations.html#multi-declarations*/ fun main(args: Array<String>) { val pair = Pair(1, "one") val (num, name) = pair println("num = $num, name = $name") } class Pair<K, V>(val first: K, val second: V) { operator fun component1(): K { return first } operator fun component2(): V { return second } }
data class User(val name: String, val id: Int) fun getUser(): User { renturn User("Alex", 1) } fun main(args: Array<String>) { val user = getUser() println("name = ${user.name}, id = ${user.id}") //or val (name, id) = getUser() println("name = $name, id = $id") //or println("name = ${getUser().compont1()}, id = ${getUser().componet2()}") }
fun main(args: Array<String>) { val map = hashMapof<String, Int>() map.put("one", 1) map.put("two", 2) for ((key, value) in map) { println("key = ${key}, value = $value") } }
data class User(val name: String, val id: Int) fun main(args: Array<String>) { val user = User("Alex", 1) println(user) // toString val secondUser = User("Alex", 1) val thirdUser = User("Max", 2) println("user == seconedUser: ${user == secondUser}")//true println("user == thirdUser: ${user == thirdUser}")//false //copy() function println(user.copy()) println(user.copy("Max")) println(user.copy(id = 2)) println(user.copy("Max", 2)) }
class Example { var p: String by Delegate() override fun toString() = "Example Class" } class Delegate() { operator fun getValue(thisRef: Any?, prop: KProperty<*>): String { return "$thisRef, thank you for delegating '${prop.name}' to me!" } operator fun setValue(thisRef: Any?, prop: KProperty<*>, value: String) { println("$value has been assigned to ${prop.name} in $thisRef") } } fun main(args: Array<String>) { val e = Example() println(e.p) e.p = "NEW" }
// 后续调用 get() 只是返回记录的结果。 class LazySample { val lazy: String by lazy { println("computed!") "my lazy" } } fun main(args Array<String>) { val sample = LazySample() println("lazy = ${sample.lazy}") println("lazy = ${sample.lazy}") }
/*Delegates.observable() 接受两个参数:初始值和修改时处理程序(handler)。 每当我们给属性赋值时会调用该处理程序(在赋值后执行)。它有三个参数:被赋值的属性、旧值和新值:*/ class User { var name: String by Delegates.observable("no name") { prop, old, new -> println("$old -> $new") } } fun main(args Array<String>) { var user = User() user.name = "Carl" }
class User { var name: String by Delegates.notNull() fun init(name: String) { this.name = name } } fun main(args: Array<String>) { val user = User(); //user.name -> IllegalStateException user.init("Carl") println(user.name) }
class User(val map: Map<String, Any?>) { val name: String by map val age: Int by map } fun main(args: Array<String>) { val user = User(mapOf( "name" to "John doe", "age" to 25 )) println("name = ${user.name}, age = ${user.age}") }
/*"Callable References" or "Feature Literals", i.e. an ability to pass * named functions or properties as values. Users often ask * "I have a foo() function, how do I pass it as an argument?". * The answer is: "you prefix it with a `::`".*/ fun main(args: Array<String>) { val numbers = listOf(1, 2, 3) println(numbers.filter(::isOdd)) } fun isOdd(x: Int) = x % 2 != 0
相关文章推荐
- Kotlin的简单使用练习
- kotlin在主程序中提交数据到fragment中并显示的简单练习
- 一个GUI的简单练习-------- Java记事本 简单实现 陆续完善中……
- 创造性想象的一种简单练习方法
- scala学习笔记☞二:简单语法练习
- 简单的栈的练习---用堆栈实现倒序打印
- C++简单练习
- Linux 简单的网络配置练习一
- CCNA课堂练习二:路由协议EIGRP简单介绍与配置
- 简单的ORM框架练习(Known.DLite)
- 简单 链表 练习
- how to make qq can't run useing TL-r402 soho router(如何用TL-r402路由器实现简单的qq封锁)
- wxPython 第一个简单的练习
- CCNA课堂练习:CCNS的模式与RIP的简单配置
- CCNP课堂练习三:vlan简单介绍及通过单交换机实现不同vlan间通讯 推荐
- 简单使用nHibernate,新手练习用。
- [转]简单的发包程序练习多线程
- 图片查看软件使用JAVA编写的,比较简单!从书上看下来的,练习使用!
- Struts2练习2--简单的MVC模式
- 综合练习:简单日历