當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Julia @view用法及代碼示例


用法:

@view A[inds...]

將索引表達式 A[inds...] 轉換為等效的 view 調用。

這隻能直接應用於單個索引表達式,並且對於包含特殊 beginend 索引語法(如 A[begin, 2:end-1])的表達式特別有用(因為普通 view 函數不支持這些語法)。

請注意,@view 不能用作常規分配的目標(例如,@view(A[1, 2:end]) = ...),un-decorated indexed assignment(A[1, 2:end] = ...)或廣播索引分配(A[1, 2:end] .= ...)也不會複製。但是,它對於像 @view(A[1, 2:end]) .+= 1 這樣的 updating 廣播分配很有用,因為這是 @view(A[1, 2:end]) .= @view(A[1, 2:end]) + 1 的簡單語法,並且 right-hand 端的索引表達式否則會在沒有 @view 的情況下進行複製。

另請參閱 @views 以切換整個代碼塊以使用視圖進行非標量索引。

Julia 1.5

在索引表達式中使用begin 來引用第一個索引至少需要 Julia 1.5。

例子

julia> A = [1 2; 3 4]
2×2 Matrix{Int64}:
 1  2
 3  4

julia> b = @view A[:, 1]
2-element view(::Matrix{Int64}, :, 1) with eltype Int64:
 1
 3

julia> fill!(b, 0)
2-element view(::Matrix{Int64}, :, 1) with eltype Int64:
 0
 0

julia> A
2×2 Matrix{Int64}:
 0  2
 0  4

相關用法


注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Base.@view — Macro。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。