Size: a a a

Kotlin Community

2020 November 19

AA

Andrey Antipov in Kotlin Community
Ожидаемо
источник

u

ultra + noise in Kotlin Community
Роман Елизаров крутейший!
источник

·

·ℕ𝕪𝕩 🇩🇪🍀... in Kotlin Community
Neat 😊
источник

i

iseki in Kotlin Community
Alexander Levin
In theory default parameter in function can be some property (which includes calculated or mutable one) :

import kotlin.random.Random

fun main() {
   foo(2)
   foo()
   foo()
   
   bar(2)
   bar()
   altNumber = 5
   bar()
}


val someNumber get() = Random.nextInt()
fun foo(number: Int = someNumber) = println(number)

var altNumber = 4
fun bar(number: Int = altNumber) = println(number)


So you kinda can avoid reflection by assigning current default value somewhere.

Maybe there are better solutions for that, but that's the first thing that comes to my mind :)
In fact I can't achieve that, because looks the default value expression or other representation of the default value is not included in the MetaData
источник

i

iseki in Kotlin Community
That means. I can't get the default value and fill it early except parsing the code. If I want to generate byte code directly, I need learn more about bytecode and Kotlin compiler...
источник

LS

Lev Shagalov in Kotlin Community
... в котлине строки передаются по ссылке или по значению?
источник

i

iseki in Kotlin Community
In general understand, I would like to say it's passing by value. But the value is a reference to the String Object
источник

I

Ilmir in Kotlin Community
Lev Shagalov
... в котлине строки передаются по ссылке или по значению?
А разница? Если строки неизменяемые.
источник

ПГ

Павло Гриник... in Kotlin Community
Lev Shagalov
... в котлине строки передаются по ссылке или по значению?
по ссылке, но так как они имутабельные - большой разницы нету
источник

LS

Lev Shagalov in Kotlin Community
Павло Гриник
по ссылке, но так как они имутабельные - большой разницы нету
Ну, когда строка пару кило, тогда разница таки есть
источник

KG

Kirill Gamazkov in Kotlin Community
Lev Shagalov
... в котлине строки передаются по ссылке или по значению?
Почти всё передаётся по ссылке, исключений по пальцам пересчитать (числовые примитивы, boolean, по-моему всё). Как и в джаве. А почему вы спрашиваете?
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
... в котлине строки передаются по ссылке или по значению?
По ссылке, но они неизменяемые
источник

LS

Lev Shagalov in Kotlin Community
Kirill Gamazkov
Почти всё передаётся по ссылке, исключений по пальцам пересчитать (числовые примитивы, boolean, по-моему всё). Как и в джаве. А почему вы спрашиваете?
Рассказывал начинающему и сам уже забыл
источник

IP

Iaroslav Postovalov in Kotlin Community
@relizarov вот еще пинг!
поздравляю 🎉
источник

AA

Andrey Antipov in Kotlin Community
Kirill Gamazkov
Почти всё передаётся по ссылке, исключений по пальцам пересчитать (числовые примитивы, boolean, по-моему всё). Как и в джаве. А почему вы спрашиваете?
Не смущай народ. Kotlin, как и Java, не имеет pass by reference семантики. Всё передаётся по значению.
Другое дело, что у нас нет в этих языках прямого доступа к самим объектам, только через ссылки.
https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value
http://www.javadude.com/articles/passbyvalue.htm

Если бы была семантика передачи по ссылке, то можно было бы реализовать функцию swap:
var1 = ...;
var2 = ...;
swap(var1, var2);
Но такое нельзя сделать ни в Java, ни в Kotlin. в С++ можно, так как там есть передача по ссылке.
источник

D

Denys in Kotlin Community
Строго говоря, в JVM все передается по значению. Только примитивы передаются сами по значению. А обьекты - по значению "указателя" на обьект.
источник

AL

Anton Lakotka in Kotlin Community
Строго говоря Котлин != JVM :)
источник

D

Denys in Kotlin Community
Denys
Строго говоря, в JVM все передается по значению. Только примитивы передаются сами по значению. А обьекты - по значению "указателя" на обьект.
Если не ошибаюсь, в книжке по подготовке к Java сертификации на этом делался даже акцент.
источник

KG

Kirill Gamazkov in Kotlin Community
Andrey Antipov
Не смущай народ. Kotlin, как и Java, не имеет pass by reference семантики. Всё передаётся по значению.
Другое дело, что у нас нет в этих языках прямого доступа к самим объектам, только через ссылки.
https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value
http://www.javadude.com/articles/passbyvalue.htm

Если бы была семантика передачи по ссылке, то можно было бы реализовать функцию swap:
var1 = ...;
var2 = ...;
swap(var1, var2);
Но такое нельзя сделать ни в Java, ни в Kotlin. в С++ можно, так как там есть передача по ссылке.
Ну это ты уже в дебри полез. За пределами С++ немного найдётся языков, где ссылка и указатель - разные вещи
источник

D

Denys in Kotlin Community
Anton Lakotka
Строго говоря Котлин != JVM :)
В текущем вопросе это не имеет значения, как выше указал Андрей.
источник