我想要以下的类型稳定版本(不是这样):
foo(::Val{k}) where k = Val{k+1}()
这可能吗?
答案 0 :(得分:4)
这算了吗?
@generated bar(::Val{k}) where k = :(Val{$(k+1)}())
例如:
julia> bar(Val{2}())
Val{3}()
julia> @code_warntype bar(Val{2}())
Variables:
#self# <optimized out>
#unused# <optimized out>
Body:
begin # line 1:
return $(QuoteNode(Val{3}()))
end::Val{3}