当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。