mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-05-23 14:50:58 +00:00
Several changes on Kontlin. (#2335)
* kotlin: remove unnecessary semicolons. Also replace code block language `java` with `kotlin`. * kotlin: change coding style (Kotlin Reference) * kotlin: anonymous function -> lambda expression Anonymous functions and lambda expressions are different in Kotlin. The code example uses `anonymous function` in the comment, while the code below is in fact lambda expressions. * Remove myself from contributors. Not for trivial changes. * kotlin: fix a typo. Thanks @geoffliu to point out this. * kotlin: change style of default parameter according to Referenec.
This commit is contained in:
parent
c77d5655ec
commit
858171d723
@ -9,7 +9,7 @@ Kotlin is a statically typed programming language for the JVM, Android and the
|
|||||||
browser. It is 100% interoperable with Java.
|
browser. It is 100% interoperable with Java.
|
||||||
[Read more here.](https://kotlinlang.org/)
|
[Read more here.](https://kotlinlang.org/)
|
||||||
|
|
||||||
```java
|
```kotlin
|
||||||
// Single-line comments start with //
|
// Single-line comments start with //
|
||||||
/*
|
/*
|
||||||
Multi-line comments look like this.
|
Multi-line comments look like this.
|
||||||
@ -42,12 +42,12 @@ fun main(args: Array<String>) {
|
|||||||
Strings can be represented in a similar way as in Java.
|
Strings can be represented in a similar way as in Java.
|
||||||
Escaping is done with a backslash.
|
Escaping is done with a backslash.
|
||||||
*/
|
*/
|
||||||
val fooString = "My String Is Here!";
|
val fooString = "My String Is Here!"
|
||||||
val barString = "Printing on a new line?\nNo Problem!";
|
val barString = "Printing on a new line?\nNo Problem!"
|
||||||
val bazString = "Do you want to add a tab?\tNo Problem!";
|
val bazString = "Do you want to add a tab?\tNo Problem!"
|
||||||
println(fooString);
|
println(fooString)
|
||||||
println(barString);
|
println(barString)
|
||||||
println(bazString);
|
println(bazString)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A raw string is delimited by a triple quote (""").
|
A raw string is delimited by a triple quote (""").
|
||||||
@ -87,7 +87,7 @@ fun helloWorld(val name : String) {
|
|||||||
Function arguments can optionally have a default value.
|
Function arguments can optionally have a default value.
|
||||||
The function return type, if required, is specified after the arguments.
|
The function return type, if required, is specified after the arguments.
|
||||||
*/
|
*/
|
||||||
fun hello(name: String = "world") : String {
|
fun hello(name: String = "world"): String {
|
||||||
return "Hello, $name!"
|
return "Hello, $name!"
|
||||||
}
|
}
|
||||||
println(hello("foo")) // => Hello, foo!
|
println(hello("foo")) // => Hello, foo!
|
||||||
@ -119,16 +119,16 @@ fun helloWorld(val name : String) {
|
|||||||
println(even(7)) // => false
|
println(even(7)) // => false
|
||||||
|
|
||||||
// Functions can take functions as arguments and return functions.
|
// Functions can take functions as arguments and return functions.
|
||||||
fun not(f: (Int) -> Boolean) : (Int) -> Boolean {
|
fun not(f: (Int) -> Boolean): (Int) -> Boolean {
|
||||||
return {n -> !f.invoke(n)}
|
return {n -> !f.invoke(n)}
|
||||||
}
|
}
|
||||||
// Named functions can be specified as arguments using the :: operator.
|
// Named functions can be specified as arguments using the :: operator.
|
||||||
val notOdd = not(::odd)
|
val notOdd = not(::odd)
|
||||||
val notEven = not(::even)
|
val notEven = not(::even)
|
||||||
// Anonymous functions can be specified as arguments.
|
// Lambda expressions can be specified as arguments.
|
||||||
val notZero = not {n -> n == 0}
|
val notZero = not {n -> n == 0}
|
||||||
/*
|
/*
|
||||||
If an anonymous function has only one parameter
|
If a lambda has only one parameter
|
||||||
then its declaration can be omitted (along with the ->).
|
then its declaration can be omitted (along with the ->).
|
||||||
The name of the single parameter will be "it".
|
The name of the single parameter will be "it".
|
||||||
*/
|
*/
|
||||||
@ -139,11 +139,11 @@ fun helloWorld(val name : String) {
|
|||||||
|
|
||||||
// The "class" keyword is used to declare classes.
|
// The "class" keyword is used to declare classes.
|
||||||
class ExampleClass(val x: Int) {
|
class ExampleClass(val x: Int) {
|
||||||
fun memberFunction(y: Int) : Int {
|
fun memberFunction(y: Int): Int {
|
||||||
return x + y
|
return x + y
|
||||||
}
|
}
|
||||||
|
|
||||||
infix fun infixMemberFunction(y: Int) : Int {
|
infix fun infixMemberFunction(y: Int): Int {
|
||||||
return x * y
|
return x * y
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -228,16 +228,16 @@ fun helloWorld(val name : String) {
|
|||||||
Sequences represent lazily-evaluated collections.
|
Sequences represent lazily-evaluated collections.
|
||||||
We can create a sequence using the "generateSequence" function.
|
We can create a sequence using the "generateSequence" function.
|
||||||
*/
|
*/
|
||||||
val fooSequence = generateSequence(1, {it + 1})
|
val fooSequence = generateSequence(1, { it + 1 })
|
||||||
val x = fooSequence.take(10).toList()
|
val x = fooSequence.take(10).toList()
|
||||||
println(x) // => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
println(x) // => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||||
|
|
||||||
// An example of using a sequence to generate Fibonacci numbers:
|
// An example of using a sequence to generate Fibonacci numbers:
|
||||||
fun fibonacciSequence() : Sequence<Long> {
|
fun fibonacciSequence(): Sequence<Long> {
|
||||||
var a = 0L
|
var a = 0L
|
||||||
var b = 1L
|
var b = 1L
|
||||||
|
|
||||||
fun next() : Long {
|
fun next(): Long {
|
||||||
val result = a + b
|
val result = a + b
|
||||||
a = b
|
a = b
|
||||||
b = result
|
b = result
|
||||||
@ -360,7 +360,7 @@ We cannot instantiate it but we can refer to its unique instance by its name.
|
|||||||
This is similar to Scala singleton objects.
|
This is similar to Scala singleton objects.
|
||||||
*/
|
*/
|
||||||
object ObjectExample {
|
object ObjectExample {
|
||||||
fun hello() : String {
|
fun hello(): String {
|
||||||
return "hello"
|
return "hello"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user