том случае, когда я пытаюсь одновременно захватить имя переменной x2 внутрь лямбды, и назначить это имя на другой объект?
struct LambdaVector{T, F<:Function} <: AbstractVector{T}
len::Int
getindexfcn::F
end
function LambdaVector(getindexfcn::F, ::Type{T}, len::Int) where {T, F<:Function}
LambdaVector{T, F}(len, getindexfcn)
end
Base.size(v::LambdaVector) = (v.len,)
Base.getindex(v::LambdaVector, i) = v.getindexfcn(i)
### usage
x1 = 1:200
x2 = fill(100, length(x1))
x2 = LambdaVector(eltype(x1), length(x1)) do i # works with x3 = ...
x2[i] .+ x1[i]
end # StackOverflow
решил я посмотреть что там происходит. Так вот переполнение возникает не при присвоении. А при выводе. Если поставить в REPL точку с запятой после end, то присвоение происходит корректно
Обсуждают сегодня