diff --git a/src/getindex.jl b/src/getindex.jl index 831622d..a85d57f 100644 --- a/src/getindex.jl +++ b/src/getindex.jl @@ -1,4 +1,4 @@ -import Base: getindex, setindex!, get, view, selectdim +import Base: getindex, setindex!, get, view, selectdim, dotview # Here we will define indexing (getindex,setindex!,firstindex,lastindex) # interface for generic Value types. @@ -17,6 +17,16 @@ function setindex!(x::Value,v,I...) end end +# x[...] .= f.(y...) ---> broadcast!(f, dotview(x, ...), y...) + +function dotview(x::Value, I...) + if !isempty(_tapes) + error("Array overwriting during gradient calculation not supported.") + else + view(x, I...) + end +end + # We handle the containers by overloading getindex: @primitive getindex(x,i...),dxi,xi ungetindex(x,dxi,i)