170 похожих чатов

А статьи от ArdanLabs тут ещё не советовали? Внутрянку некоторую

неплохо раскрывают

4 ответов

9 просмотров

Про Data Semantics очень полезная статья у Билла Кеннеди, хотя есть ощущение, что это исключительно его терминология, нигде больше не читал про нее особо)

Timur Sharapov
Про Data Semantics очень полезная статья у Билла К...

Value semantics. Передача по значению. Нет, это общий термин, просто он один его так со всех сторон рассматривает

Alexey Palazhchenko
Value semantics. Передача по значению. Нет, это об...

Имел в виду "On Data And Semantics". Без союза прозвучало странно, да :) Я, кстати, хотел бы воспользоваться моментом и кое-что спросить. If all the methods of a named type T have a receiver type of T itself (not *T ), it is safe to copy instances of that type; calling any of its methods necessarily makes a copy. For example, time.Duration values are liberally copied, including as arguments to functions. But if any method has a pointer receiver, you should avoid copying instances of T because doing so may violate internal invariants. For example, copying an instance of bytes.Buffer would cause the original and the copy to alias ( §2.3.2 ) the same underlying array of bytes. Subsequent method calls would have unpredictable effects. Это отрывок из The Go Programming Language. Как бы все понятно: если есть методы с pointer receiver, то их вызов может внутренние инварианты испортить. Но условие "если все методы с value receiver, то безопасно копировать T" вызывает вопросы. Даже если все ресиверы имеют тип T, если в структуре, например, slice или map, мы в любом случае имеем указатель на backing array, и неожиданные изменения возможны. Может, я просто не так понимаю параграф

Timur Sharapov
Имел в виду "On Data And Semantics". Без союза про...

Всё так. И я задавал этот вопрос Биллу после какой-то конфы, и он признавал проблему 🙂

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет. Я верно понимаю, что в определении класса Монад m — зафиксирован (к тому же поскольку это моноид в категории эндофункторов). Т.е. используя байнд я не могу перемещать...
Arseny
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта