Size: a a a

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

2020 November 12

АО

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

AK

Artem Korzhimanov in Язык программирования Julia / Julia programming language
Я всё же не думаю, что он прямо таки читает весь скрипт перед выполнением. Обычно динамические языки выполняются line by line. Другое дело, что при JIT функция не компилируется, пока не вызвана, поэтому то, что внутри функции интерпретируется только в тот момент, когда происходит вызов, поэтому формально в функции можно использовать переменные, определенные после неё, но до её вызова
источник

АО

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

АО

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

AK

Artem Korzhimanov in Язык программирования Julia / Julia programming language
Я имею ввиду, что вот так работать не будет:

function f()
 g()
end

f()

function g()
end
источник

АО

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

АО

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

АО

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

AK

Artem Korzhimanov in Язык программирования Julia / Julia programming language
В интернете кто-то не прав, и я пишу код на смартфоне :) куда мир катится
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
То есть
include("f.jl")
include("g.jl")

f()


f.jl:
function f()
 g()
end


g.jl:
function g()
end


должно сработать, несмотря на то, что определения разбросаны по разным файлам.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Artem Korzhimanov
В интернете кто-то не прав, и я пишу код на смартфоне :) куда мир катится
Быть неправым - это единственный способ научиться чему -то новому ^_^
источник

AK

Artem Korzhimanov in Язык программирования Julia / Julia programming language
Да, так должно работать
источник

АО

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

VG

Viktor G. in Язык программирования Julia / Julia programming language
Минус только в том, что можно как угодно запутать друг с другом инклуды - и все равно будет работать, но понятно ничего не будет)
источник

АО

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

VG

Viktor G. in Язык программирования Julia / Julia programming language
Я для порядка принялся писать инклуды только в файле самого пакета и под каждым экспортировать свой набор функций
источник

АО

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

```
module Foo
import ..Bar

function f()
  Bar.g()
end
end # module

module Bar
import ..Foo
function g()
 Foo.f()
end
end # module
источник

АО

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

VG

Viktor G. in Язык программирования Julia / Julia programming language
ого, а декларации типов так не работают
источник

АО

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