Size: a a a

Язык программирования Julia / Julia programming language

2020 October 25

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
За все время пользовался один раз глобальными переменными, когда при помощи TimerOutputs профилировал функции.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Viktor G.
Слишком широкое утверждение, во многих случаях это единственный вариант не переусложнять код (по крайней мере, в языках без мультиметодов)
:-)) так, две школы переменных :-))))
источник

ВФ

Виктор Федоров... in Язык программирования Julia / Julia programming language
Viktor G.
Слишком широкое утверждение, во многих случаях это единственный вариант не переусложнять код (по крайней мере, в языках без мультиметодов)
Я согласен
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
На самом деле все что написано с помощью глобальных переменных легко переписывается в локальные.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Ну, если пользоваться чём-то вроде Unpack.jl
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Всё, что вам нужно, собираете в один большой контейнер и передаёте его в функцию.
источник

ВФ

Виктор Федоров... in Язык программирования Julia / Julia programming language
Это конечно, но не всегда тянуть переменные в параметры удобно. Надо уж сразу структуру создавать тогда.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Можно Named Tuppe
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
Андрей Оськин
Всё, что вам нужно, собираете в один большой контейнер и передаёте его в функцию.
Тоже не выход, проблема действительно в разделении контекстов.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Tuple
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
В 1.5 добавили совершенно фантастический сахар для их создания
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
using Unpack

N = 1
M = 100
eps = 1e-6

opts = (; N, M, eps)

function f(opts)
 @unpack N, M = opts
 return N * M
end
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Этот код будет работать быстро, требует достаточно небольших манипуляций для распаковки и никаких глобальных переменных.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Могу ошибаться, но вроде даже так можно написать

function f(; opts)
...
end
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
То есть если надо какую-то дополнительную переменную создать, добавляете ее инициализацию, добавляете ее через запятую в opts и вытаскиваете unpack в нужных функциях.
источник

ВФ

Виктор Федоров... in Язык программирования Julia / Julia programming language
Отличная штука
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Только студентам этого конечно не обьяснить :-) выглядеть будет как магия.
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
Не понимаю, чем это будет отличаться, если вместо NamedTuple использовать в структуру Context, пусть даже с @kwdef
источник

ВФ

Виктор Федоров... in Язык программирования Julia / Julia programming language
Андрей Оськин
Ну, кстати, да. Потеря контекста у студентов - это классика. Лучше сразу к правильному стилю приучать, а не переучивать потом.
На самом деле, студенты про глобальные переменные изначально уже осведомлены, и приходится прикладывать большие усилия, чтобы отучить использовать их вместо параметров функций :)
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Viktor G.
Не понимаю, чем это будет отличаться, если вместо NamedTuple использовать в структуру Context, пусть даже с @kwdef
Ничем, просто структуру немного сложнее делать: ей надо имя придумывать, писать больше, она плохо под Revise живет.
источник