Romɑn
Romɑn
= (
Ayrat
А меня?
а ты и так здесь!
Анна
А меня?
тебя не надо звать - ты сам приходишь :)
Vasily
Вот точно не помню, что должно быть в случае c#. В теории изменения не должны бы примениться
Ayrat
а вот в F# 1 1!
Vasily
А если mutable member x.Bar
Vasily
Точнее val
Vladislav
а вот в F# 1 1!
из-за чего?
Ayrat
А если mutable member x.Bar
я даже хз как это записать
Ayrat
из-за чего?
этот пидор делает копию структуры перед присвоением
Vasily
Ща
Romɑn
get, set укажи у val
Ayrat
из-за чего?
[EntryPoint] public static int main(string[] _arg1) { Foo foo = new Foo("1"); PrintfFormat<FSharpFunc<string, Unit>, TextWriter, Unit, Unit> format = new PrintfFormat<FSharpFunc<string, Unit>, TextWriter, Unit, Unit, string>("%s"); PrintfModule.PrintFormatLineToTextWriter(Console.Out, format).Invoke(foo.Bar); Foo foo2 = foo; foo2.Bar = "2"; format = new PrintfFormat<FSharpFunc<string, Unit>, TextWriter, Unit, Unit, string>("%s"); PrintfModule.PrintFormatLineToTextWriter(Console.Out, format).Invoke(foo.Bar); return 0; }
Vladislav
А если mutable member x.Bar
ну это поле обычное и будет в виде свойства
Vladislav
К СПЕКЕ!
Ayrat
К СПЕКЕ!
МОЛЧИТ КАК РЫБА ОБ ЛЁД
Ayrat
и я ссыкую идти ишью открывать
Nikolay
Короче, мне дали доступ к кластеру
Nikolay
Сказали можешь взять такую-то ноду
Nikolay
В итоге
Ayrat
get, set укажи у val
F# компилятор не так прост
Ayrat
я бы попросил у кого уроки, как правильно записать ебаное поле в структуре и ебаное проперти в структуре
Nikolay
Ayrat
поле мутабельное, да
Nikolay
Аптайм ноды :D
Ayrat
я не справился до сих пор
Nikolay
И это не я сломал
Nikolay
Вроде
Romɑn
и я ссыкую идти ишью открывать
обычно фильтр через стэковерфлоу
Romɑn
если там сказали что баг, то несем ишуй открывать
Bonart
и я ссыкую идти ишью открывать
Байдизайна бояться - в гитхаб не ходить!
Vasily
The fields in a struct may be mutable only if the struct does not have a primary constructor. For example: [<Struct>] type MutableComplex = val mutable real : float; val mutable imaginary : float member x.R = x.real member x.I = x.imaginary member x.Change(r, i) = x.real <- r; x.imaginary <- i new (r, i) = { real = r; imaginary = i }
Vasily
Вот какая сигнатура у change&
Ayrat
ты его даже присвоить не сможешь через <-
Ayrat
снаружи
Vladislav
и я ссыкую идти ишью открывать
https://blogs.msdn.microsoft.com/seteplia/2018/03/07/the-in-modifier-and-the-readonly-structs-in-c/
Ayrat
а метод Change работает над копией структуры
Vladislav
мне кажется фшарп делает дефенсиф копи
Vladislav
как шарп сейчас с ридонли структурами
Vasily
Ну открывай ишью с примером из спеки, хуле
Ayrat
т.е. вывод - сделать МУТАБЕЛЬНОЕ поле в страктах F# невозможно
Vasily
Но в примере, кстати
Vasily
поля выведены в проперти
Ayrat
поля выведены в проперти
ридонли проперти если что
Vasily
Да пох
Ayrat
толку от них
Vasily
Попробуй
Vasily
Своему Bar member еще добавить
Ayrat
структура иммутабельна как рыба об лёд
Ayrat
mutable нихуя не делает
Bonart
Большой брат бдит!
Vasily
Не, ну только через Change же
Ayrat
Хехехе, ща
Bonart
Структура должна дойти до сборщика мусора невинной
Vasily
@AnutaU Какого там числа func.by, гришь?
Vladislav
Therefore, in order to perform this mutation, you need to declare john itself as mutable too: [<Struct>] type Person = { mutable FirstName:string ; LastName : string} let mutable john = { FirstName = "John"; LastName = "Connor"} john.FirstName <- "Sarah" // <-- works fine now
Vladislav
пиздос
Vasily
Не вариант :(. Я в 3 утра 26 в Москву прилетаю
Ayrat
пиздос
СРАБОТАЛО
Bonart
А теперь перед вами выступит Айрат и его горящий... с примерами мутабельности структур в F#
Vladislav
СРАБОТАЛО
п и з д о с
Vasily
Горящий Айрат
Ayrat
let mutable m = MutableComplex(1.,2.) m.Change(5.,5.) printfn "%f %f" m.I m.R
Анна
Горящий Айрат
вот это номер!
Vladislav
это неочевидно
Ayrat
АААХУЕННА
Ayrat
это неочевидно
и спека об этом ничего не говорит
Vasily
Спеку надо дописывать
Vasily
Для такого поведения