неужели нужно дополнительно let mutable забайндить, нет другого способа?) там сахар какой-нибудь mutable {...}
По-моему, это делали, чтобы новички не удивлялись, почему они структуру в функцию передают, там изменяют, а переданная структура не меняется. Не уверен, что решение было хорошим. Боюсь, тут придётся делать let mutable mutableTree = tree mutableTree.Content <- ...
this — это byref<StructType> в случае структуры c мутабельными полями (или inref<StructType>, если таких полей нет). Тут действуют те же правила, что и для других для value types. Сравни: https://sharplab.io/#v2:DYLgZgzgNAJiDUAfYBTALgAgG4ENgFcUMBeDABgFgAoVTMAe3oCMcAnDACgA8QMmBPVijAAeAJYA7NAD4AlCQxcMIgLQYALACZqDZmwwAyXARTUgA===
В mutableTree будет копия.
т.е. если я не хочу создавать копию, а именно хочу поменять значение поля через сеттер в структуре — то мне нужно передавать в функцию где происходит изменение не structIWantToUpdate а structIWantToUpdate byref / outref ?
Тебе нужно найти способ пометить саму переменную, храняющую структуру, mutable.
внутри функции насколько я понимаю это можно сделать только скопировав значение в самом начале, сразу после передачи в let mutable container = tree
Ты можешь так сделать, но при этом тебе нужно будет вернуть изменённое значение как-то
Вот тут я написал ерунду. В случае иммутабельных структур this действительно является inref<StructType>, но для мутабельных структур это так не работает.
Обсуждают сегодня