Size: a a a

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

2018 September 13

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Дурацкий вопрос, который наверняка давно решён умными программистами )
предлоложим, что у меня есть 3 файла;  в одном чисто служебные функции, типа преобразований из массива UInt8 в число UInt32 или копирование какое-нибудь. Во втором какие-то содержательные вещи, которые используют "служебные функции". В третьем — совсем нечто содержательное, что использует как "служебные", так и функции из 2го файла.

Получается мне инклюд нужно 2 раза писать (во всех файлах, где используются "служебные" функции)? или лучше один раз написать?
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
что-то типа #ifndef
источник

KT

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

АО

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

АО

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

Что-то типа
# File a.jl
using b
using c

#code
———
# File b.jl

#code
———
# File c.jl

#code
источник

АО

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

АО

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

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
у меня вроде так c.jl не заработает?
источник

АО

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

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
а, точнее так: я его тестировать не смогу отдельно
источник

АО

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

АО

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

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
С другой стороны - ты же можешь делать using a в тестах, а потом гонять только функции из файла c?
источник

АО

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

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
ну да, наверное да )
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
с типами я тоже запутался совсем. К примеру, я хочу объявить некоторый абстрактный тип А, а затем создать несколько модулей, в которых я буду создавать уже конкретные типы, являющиеся подтипами А
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
я просто взял да написал практически пустой файл наподобие:
 abstract type A end
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
затем я в каждом модуле подключаю его:
include("foo.jl")
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
но в итоге они у меня наследуются внутри модуля не от типа А, а от типа myModule.A
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
т.е. якобы этот А в каждом модуле "свой"
источник