关于`isbits`类型参数的算术

时间:2017-11-22 18:19:09

标签: julia

我想要以下的类型稳定版本(不是这样):

foo(::Val{k}) where k = Val{k+1}()

这可能吗?

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}