Size: a a a

Kotlin Community

2020 November 19

AL

Anton Lakotka in Kotlin Community
извините, я просто хотел пошутить.
источник

AA

Andrey Antipov in Kotlin Community
Kirill Gamazkov
Ну это ты уже в дебри полез. За пределами С++ немного найдётся языков, где ссылка и указатель - разные вещи
Это не дебри, это основы. Вот простой тест, который я привёл с функцией swap. можно реализовать - есть передача по ссылке. Нельзя - нету.
источник

KG

Kirill Gamazkov in Kotlin Community
Andrey Antipov
Это не дебри, это основы. Вот простой тест, который я привёл с функцией swap. можно реализовать - есть передача по ссылке. Нельзя - нету.
Это даже скорее спор о терминах. Можно считать, что вообще всё и везде передаётся по значению, но иногда это значение - указатель. То, что ты подразумеваешь под ссылкой - синтаксический сахар над указателем.
источник

PE

Pavel Erokhin in Kotlin Community
Kirill Gamazkov
Это даже скорее спор о терминах. Можно считать, что вообще всё и везде передаётся по значению, но иногда это значение - указатель. То, что ты подразумеваешь под ссылкой - синтаксический сахар над указателем.
++
источник

D

Denys in Kotlin Community
Kirill Gamazkov
Это даже скорее спор о терминах. Можно считать, что вообще всё и везде передаётся по значению, но иногда это значение - указатель. То, что ты подразумеваешь под ссылкой - синтаксический сахар над указателем.
Можно и системный блок называть процессором. Но это будет не корректно. :)
источник

D

Denys in Kotlin Community
Если не хотим открывать книгу по CS, можно глянуть на Википедию:

> Call by reference (or pass by reference) is an evaluation strategy where a function receives an implicit reference to a variable used as argument, rather than a copy of its value.

https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference
источник

D

Denys in Kotlin Community
> This typically means that the function can modify (i.e., assign to) the variable used as argument—something that will be seen by its caller.
источник

AA

Andrey Antipov in Kotlin Community
Kirill Gamazkov
Это даже скорее спор о терминах. Можно считать, что вообще всё и везде передаётся по значению, но иногда это значение - указатель. То, что ты подразумеваешь под ссылкой - синтаксический сахар над указателем.
Я понимаю под ссылкой ровно то, что под ней понимается в языке C++, откуда и пошёл этот термин. Можно конечно под ним понимать что-то другое, но тогда тебя не поймут те, кто знаком с исходной терминологией.
источник

D

Denys in Kotlin Community
Denys
> This typically means that the function can modify (i.e., assign to) the variable used as argument—something that will be seen by its caller.
Теперь попытаемся изменить значение внешней переменной, переданой в функцию извне в Kotlin'e.
источник

PE

Pavel Erokhin in Kotlin Community
Andrey Antipov
Я понимаю под ссылкой ровно то, что под ней понимается в языке C++, откуда и пошёл этот термин. Можно конечно под ним понимать что-то другое, но тогда тебя не поймут те, кто знаком с исходной терминологией.
Мы все-таки пишем на котлине, и под ссылкой подразумевается не то что в плюсах
источник

AA

Andrey Antipov in Kotlin Community
Pavel Erokhin
Мы все-таки пишем на котлине, и под ссылкой подразумевается не то что в плюсах
На этот случай есть ссылка на википедию с описанием сути термина передача по ссылке.
источник

AN

Alexander Nozik in Kotlin Community
Andrey Antipov
Я понимаю под ссылкой ровно то, что под ней понимается в языке C++, откуда и пошёл этот термин. Можно конечно под ним понимать что-то другое, но тогда тебя не поймут те, кто знаком с исходной терминологией.
Подразумевают обычно все-таки возможность менять входные значения, а не чего там в стек ложится
источник

AM

Andrew Mikhaylov in Kotlin Community
Pavel Erokhin
Мы все-таки пишем на котлине, и под ссылкой подразумевается не то что в плюсах
Ссылка — это одно и то же и там, и там. И это не совсем спор сугубо о терминологии, выше и правда верно привели пример практической разницы. В JVM (и Kotlin это унаследовал на всех платформах) фактически не pass by reference, а pass value by reference.
источник

AM

Andrew Mikhaylov in Kotlin Community
Просто эту маленькую деталь логично уточнять, когда об этом речь заходит. Не ради чистоты терминологии, а ради кларификации поведения.
источник

AA

Andrey Antipov in Kotlin Community
Alexander Nozik
Подразумевают обычно все-таки возможность менять входные значения, а не чего там в стек ложится
Ну так и не получится поменять переданный объект на что-то другое изнутри функции, так чтобы эти изменения снаружи было видно.
Состояние объекта, если он изменяемый - да, но сам объект - нет.
источник

RU

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

AA

Andrey Antipov in Kotlin Community
Roman Ushakov
Что на счёт byte[]? Почему-то резко захотел спросить
Нет такого в Котлин
источник

RU

Roman Ushakov in Kotlin Community
Array<Byte>
источник

AM

Andrew Mikhaylov in Kotlin Community
Roman Ushakov
Что на счёт byte[]? Почему-то резко захотел спросить
Это массив, массив — это класс. Передаётся точно так же, как и другие — value by reference. Не by value, то бишь весь массив не копирутся при передаче.
источник

OK

Oleg Kovalov in Kotlin Community
congrats)
источник