Size: a a a

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

2020 March 18

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
а ещё вопрос: я сделал итератор, и у него одно поле — это массив, который я хочу заполнять на каждой итерации чем-то
источник

KT

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

KT

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

VG

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

АО

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

Другой вариант, можно массив передавать в состоянии и тоже переиспользовать.
источник
2020 March 19

KT

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

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
я ещё с проблемой столкнулся — непонятно, как удалить 1 поле из Tuple
источник

АО

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

АО

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

KT

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

АО

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

KT

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

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
что она именно длины N-1
источник

KT

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

АО

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

KT

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

VG

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

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
function dropxx(t::NTuple, k)
   ntuple(i -> i < k ? t[i] : t[i + 1], length(t) - 1)
end


dropxx((10, 20, 30, 40), 3)

# (10, 20, 40)


@code_typed dropxx((10, 20, 30, 40), 3)

CodeInfo(
1 ── %1  = Base.slt_int(1, k)::Bool
└───       goto #3 if not %1
2 ── %3  = Base.getfield(t, 1, true)::Int64
└───       goto #4
3 ── %5  = Base.getfield(t, 2, true)::Int64
└───       goto #4
4 ┄─ %7  = φ (#2 => %3, #3 => %5)::Int64
│    %8  = Base.slt_int(2, k)::Bool
└───       goto #6 if not %8
5 ── %10 = Base.getfield(t, 2, true)::Int64
└───       goto #7
6 ── %12 = Base.getfield(t, 3, true)::Int64
└───       goto #7
7 ┄─ %14 = φ (#5 => %10, #6 => %12)::Int64
│    %15 = Base.slt_int(3, k)::Bool
└───       goto #9 if not %15
8 ── %17 = Base.getfield(t, 3, true)::Int64
└───       goto #10
9 ── %19 = Base.getfield(t, 4, true)::Int64
└───       goto #10
10 ┄ %21 = φ (#8 => %17, #9 => %19)::Int64
│    %22 = Core.tuple(%7, %14, %21)::Tuple{Int64,Int64,Int64}
└───       goto #11
11 ─       return %22
) => Tuple{Int64,Int64,Int64}
источник

АО

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

KT

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