用法:
@boundscheck(blk)
將表達式 blk
注釋為邊界檢查塊,允許它被
省略。@inbounds
注意
寫入@boundscheck
的函數必須內聯到它的調用者中才能使@inbounds
生效。
例子
julia> @inline function g(A, i)
@boundscheck checkbounds(A, i)
return "accessing ($A)[$i]"
end;
julia> f1() = return g(1:2, -1);
julia> f2() = @inbounds return g(1:2, -1);
julia> f1()
ERROR: BoundsError: attempt to access 2-element UnitRange{Int64} at index [-1]
Stacktrace:
[1] throw_boundserror(::UnitRange{Int64}, ::Tuple{Int64}) at ./abstractarray.jl:455
[2] checkbounds at ./abstractarray.jl:420 [inlined]
[3] g at ./none:2 [inlined]
[4] f1() at ./none:1
[5] top-level scope
julia> f2()
"accessing (1:2)[-1]"
警告
@boundscheck
注釋允許您作為庫編寫者 opt-in 以允許 other code
使用
刪除邊界檢查。如上所述,調用者必須在使用 @inbounds
@inbounds
之前使用他們可以訪問的信息驗證他們的訪問是否有效。例如,對於您的
子類的索引,這涉及根據其 AbstractArray
檢查索引。因此,axes
@boundscheck
注釋應僅在您確定其行為正確後添加到
或 getindex
實現。setindex!
相關用法
- Julia @b_str用法及代碼示例
- Julia @cfunction用法及代碼示例
- Julia @view用法及代碼示例
- Julia @isdefined用法及代碼示例
- Julia @v_str用法及代碼示例
- Julia @show用法及代碼示例
- Julia @r_str用法及代碼示例
- Julia @locals用法及代碼示例
- Julia @raw_str用法及代碼示例
- Julia @coalesce用法及代碼示例
- Julia @assert用法及代碼示例
- Julia @ccall用法及代碼示例
- Julia @views用法及代碼示例
- Julia @task用法及代碼示例
- Julia @something用法及代碼示例
- Julia @deprecate用法及代碼示例
- Julia splice!用法及代碼示例
- Julia LibGit2.count用法及代碼示例
- Julia LinearAlgebra.BLAS.dot用法及代碼示例
- Julia break用法及代碼示例
- Julia sizeof()用法及代碼示例
- Julia :<=用法及代碼示例
- Julia zero()用法及代碼示例
- Julia rem用法及代碼示例
- Julia ...用法及代碼示例
注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Base.@boundscheck — Macro。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。