Size: a a a

2021 April 06

g

gavr in ru.nim.talks
типа какойнить автобоксинг или около  того
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
компилятор сам будет передавать по ссылке, если это необходимо
источник

g

gavr in ru.nim.talks
не, яж он не будет компилить, например если я изменю поле объекта из аргумента как тут
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
??
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
так для этого и есть var
источник

g

gavr in ru.nim.talks
так оно новую создаст
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
нет
источник

g

gavr in ru.nim.talks
хм
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
type
 Person = object
   name: string
 
proc test(self: var Person) =
 self.name = "asd"

var person = Person()
person.test()
echo person
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
конечно иногда проще просто тыкнуть "ref" в создание объекта, и везде у тебя будет мутабельно (не нужно var аннотации)
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
но в этом случае код таки будет быстрее
источник

g

gavr in ru.nim.talks
Using var for a parameter creates an invisible pointer and the data does not need to lay on the heap but still needs to be mutable
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
да
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
источник

g

gavr in ru.nim.talks
супер странное ключевое слово для этого
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
почему?
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
в ниме var и так юзается для указания мутабельности
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
var x = XXX # мутабельная переменная x
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
let/const не мутабельные
источник

g

gavr in ru.nim.talks
я первое что подумал из синтакса, вот принимаем мы тут переменную не по ссылке, значит менять её незя, но если добавить var, которым они обычно создаются то можно, прям напрашивается вывод что var тут создаст просто нам клон переменной шоб его можно было менять
источник