【问题标题】:Question on Julia function parameter syntax关于 Julia 函数参数语法的问题
【发布时间】:2019-07-23 00:08:48
【问题描述】:

考虑以下函数签名:function f(xs :: AbstractVector{T}, ::Val{U}, ::Val{V}) where {T, U, V}。我理解value types 的概念,但我不确定我是否理解前置双冒号的含义,而且我似乎无法找到任何专门关于这个主题的信息。

在 C++ 中,类似的语法将确保名称的解析发生在全局而不是当前命名空间中,但我不确定这是否适用于 Julia(以及,如果适用,如何)。我可以推断这与类型有关,因为使用相同的语法来表示变量的类型,但是在没有受让人的情况下进行类型分配意味着什么? TIA。

【问题讨论】:

    标签: function syntax julia signature


    【解决方案1】:
    function f(xs :: AbstractVector{T}, ::Val{U}, ::Val{V}) where {T, U, V}
    

    表示对f的调用必须分别传递AbstractVector、Val和Val类型的三个参数。但是,您仅为第一个参数xs 捕获传递变量的值。第二个和第三个参数的值没有被捕获(在这种情况下你并不需要它们,因为Val 是一个单例类型)。但是你捕获类型T、U和V,并且可以在函数体中引用它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2021-12-24
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多