Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Dummy dumb = new Dummy();
val (x, y, z) = points3d[0] или даже for ((k, v) in hashMap) { /* ... */ }Настоящих tuples, правда, нет (мотивация — не нужны), и примеры выше работают за счёт реализации методов component1..N.data, компилятор сам сгенерирует equals, hashCode, copy и component1..N. Ну, ещё есть Pair и Triple в стандартной библиотеке, если семантику полей не жалко. :)data class Point2D(val x: Int, val y: Int)
y, x = getCursorPosition(); // упс, баг
file, err := os.Open("file.go")
file, _ := os.Open("file.go") // обработай это, чудила! ghetto style
data class Region(val entrance: Node, val exit: Node) // вот эта
fun Graph.findSomeRegion(): Region = ...
...
val region = graph.findSomeRegion()
function findSomeRegion() {
...
return { entrance : nodeEn , exit : nodeEx }
}
...
var region = findSomeRegion() // get all data as object
var { nodeEn , nodeEx } = findSomeRegion() // destruct object to variables
catch (Exception e) { }» совершенно несостоятельно. Мне нравится, что компилятор не дает мне «прозевать» IOException. А если совсем «приспичит», я этот IOException заверну в RuntimeException. Но 9 из 10 случаев, когда исключение не ловится — это когда оно тупо «прозёвывается».
Kotlin и свои почти языковые конструкции