Julia 多次调度失败

2024-04-03

v06 我想写一个需要 2 到 3 个参数的签名。第一个是整数或整数向量。第二个是整数向量或整数矩阵。第三个是整数向量或未指定。

我第一次尝试是这样的

function foo(
a::Union{Integer, Vector{Integer}},
b::Union{Vector{Integer}, Matrix{Integer}},
c::Union{Void, Vector{Integer}} = nothing)

当我这样称呼它时foo(3, [0o7, 0o5])我收到一条错误消息,告诉我它无法匹配。

ERROR: LoadError: MethodError: no method matching foo(::Int64, ::Array{UInt8,1})
Closest candidates are:
  foo(::Union{Array{Integer,1}, Integer}, !Matched::Union{Array{Integer,1}, Array{Integer,2}}) at ...
  foo(::Union{Array{Integer,1}, Integer}, !Matched::Union{Array{Integer,1}, Array{Integer,2}}, !Matched::Union{Array{Integer,1}, Void}) at ...

现在我明白为什么朱莉娅无法匹配这个Array{UInt8} <: Array{Integer} == false,但这似乎是朱莉娅不聪明的表现。

然后我尝试了这个

foo(a::Union{Z1, Vector{Z1}},
    b::Union{Vector{Z2}, Matrix{Z2}},
    c::Union{Void, Vector{Z3}} = nothing
    ) where {Z1 <: Integer, Z2 <: Integer, Z3 <: Integer}

现在朱莉娅甚至不告诉我什么不匹配!

ERROR: LoadError: MethodError: no method matching foo(::Int64, ::Array{UInt8,1}, ::Void)
Closest candidates are:
  foo(::Union{Array{Z1<:Integer,1}, Z1<:Integer}, ::Union{Array{Z2<:Integer,1}, Array{Z2<:Integer,2}}, ::Union{Array{Z3<:Integer,1}, Void}) where {Z1<:Integer, Z2<:Integer, Z3<:Integer} at ...
  foo(::Union{Array{Z1<:Integer,1}, Z1<:Integer}, ::Union{Array{Z2<:Integer,1}, Array{Z2<:Integer,2}}) where {Z1<:Integer, Z2<:Integer} at ...

Yes, Array{UInt8} <: Array{Integer} == false。这称为“参数不变性”。许多其他问题已经讨论了这个主题。

不过,您遇到的另一个问题是,当您使用静态函数参数时 - 也就是说,f(…) where T — the T must匹配某些东西,因为它可以在函数体内使用。这会导致麻烦Unions where T并非在每个选项中都可用。我相信关于更改此行为以允许匹配存在一个悬而未决的问题Union不包含的元素T,如果您尝试访问该绑定,则会将该绑定变成未定义的变量。

现在的解决方法是使用类型变量aren't函数的静态参数。例如。,

   foo(a::Union{Integer, Vector{<:Integer}},
       b::Union{Vector{<:Integer}, Matrix{<:Integer}},
       c::Union{Void, Vector{<:Integer}} = nothing) = 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Julia 多次调度失败 的相关文章

  • 我可以在 Julia 中专门化类型定义吗?

    Julia 的参数类型实际上定义了一系列包含不同内存布局的类型 我想知道这是否也适用于复合类型中的字段名称和数量 一个简单的例子如下 type mytype Float64 a Float64 b Float64 end type myty
  • 为什么我的 Julia 代码运行速度比 JavaScript 慢?

    最近 我对 Julia lang 很感兴趣 因为它声称是一种具有接近 C 性能的动态语言 然而 到目前为止我的经验并不好 至少在性能方面 我正在编写的应用程序需要随机访问特定的数组索引 然后将它们的值与其他特定的数组索引进行比较 经过多次迭
  • 处理 Julia 中 kwargs 的类型

    我该如何使用kwargs在 Julia 函数中并声明其类型以提高速度 function f x Float64 kwargs kwargs Dict kwargs if haskey kwargs c c Float64 kwargs c
  • Julia 作用域:为什么这个函数会修改全局变量?

    我是 Julia 的新手 但到目前为止我还是它的粉丝 但根据多年的 R 编程经验 一些范围规则让我感到困惑 我们来看看这个函数 这与我的预期完全一致 function foo1 x y x t 1 while t lt 1000 t 1 y
  • Julia 中的 @code_native、@code_typed 和 @code_llvm 有什么区别?

    在使用 julia 时 我想要有一个类似于 python 的功能dis模块 通过网络 我发现 Julia 社区已经解决了这个问题并给出了这些 https github com JuliaLang julia issues 218 https
  • Julia 自定义类型分配

    我尝试从 Julia 中的自定义类型分配多个元素 但是我不知道该怎么做 或者换句话说 我想重载赋值运算符以返回该类型中包含的所有元素的元组 这是所需的行为 type foo a b end a b foo 1 2 a gt 1 这是错误消息
  • 从 Julia 程序执行 >> shell 运算符

    我试图使用反引号从 Julia 内部附加一个文件 run cat file2 gt gt file1 但这行不通 似乎 gt gt 运算符无法正确解释 有没有办法通过管道或其他技巧来做到这一点 如果您尝试以编程方式执行此操作 则主要问题正文
  • 我可以使用具有固定输入的“map”吗?

    假设我这样做f x y 2x ythen map f 2 4 6 1 1 1 我会得到 3 element Array Int64 1 5 9 13 If I do map f 2 4 6 1 即我想假设第二个输入始终相同 我会得到 1 e
  • Julia - 迭代字典中的键组合

    有没有一种巧妙的方法来迭代字典中的键组合 我的字典有这样的值 1 gt 1 2 2 3 gt 15 3 gt 6 7 8 4 9 11 gt 3 我需要做的是获取所有长度的键组合1 n where n可能是FX 3 就像上面的例子一样 我想
  • 如何在 Julia 中提供可重现的样本数据

    Here on stackoverflow com 当我提供样本数据来制作可重现的示例时 我该如何以朱利安方式做到这一点 In R例如dput df 将输出一个字符串 您可以用它来创建df再次 因此 您只需将结果发布到 stackoverf
  • Julia:数组是否包含特定的子数组

    在 julia 中 我们可以检查数组是否包含值 如下所示 gt 6 in 4 6 5 true 然而 当尝试按特定顺序检查子数组时 这会返回 false gt 4 6 in 4 6 5 false 验证数组中是否存在特定子数组的正确语法是什
  • Julia JUMP Gurobi MIP - 查询并存储最佳目标并在运行时绑定

    我通过 Julia 中的 JuMP 包使用 Gurobi 来解决混合整数程序 我想获得一个图表像这个 https i stack imgur com 427LC png 其中还提供了基于 Python 的解决方案 也已在古罗比社区形式 ht
  • Julia 中的指针解引用(unsafe_load(ptr) 有效,但 unsafe_wrap(Array, ptr, 1) 段错误)

    我正在尝试取消引用指针unsafe load and unsafe wrap 我发现unsafe load不过效果很好unsafe wrap如果取消引用指向可变结构的指针 则会崩溃 玩具示例 mutable struct Wrapper d
  • Julia 中过时的软件包列表

    有没有办法列出 Julia 中所有过时的软件包 相当于pip3 list outdated在Python中 我做了几次搜索 1 https docs julialang org en v1 stdlib Pkg 2 https pkgdoc
  • @distributed 似乎有效,函数返回很不稳定

    我正在学习如何在 Julia 中进行并行计算 我在用着 sync distributed在 3x 嵌套的开始处for循环并行化事物 参见底部的代码 从线路上看println errCmp row col 我可以观察数组的所有元素errCmp
  • 带有 return 语句的 Julia @parallel for 循环

    如何在满足条件时立即返回所有工作人员的函数中编写并行 for 循环 IE 像这样的东西 function test n sync parallel for i in 1 1000 statement if condition return
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • 如何制作任意级别的嵌套for循环

    我可以像这样做一个两级嵌套循环 for i1 in 1 n for i2 in 1 n do something with i1 i2 如何将其扩展到任意级别的嵌套循环 例如 我可以在 Python 中执行此操作以循环 n m 的笛卡尔积
  • 获取参数类型的参数

    假设我定义了一个这样的类型 type Point Tx Ty end 然后我创建一个这种类型的变量 例如 a Point Int64 something 现在 我只知道我可以获得以下类型a by typeof a 那是 Point Int6
  • 在 Julia 中解压缩元组数组

    假设我有一个元组数组 arr 1 2 3 4 5 6 使用 python 我可以做zip arr 1 3 5 2 4 6 朱莉娅中与此等效的是什么 作为 splatting 的替代方案 因为这非常慢 您可以执行以下操作 unzip a ma

随机推荐

  • Auth0 Lock 中的用户注册事件

    The authenticated 身份验证成功后会发出事件 lock on authenticated function authResult 但是有什么方法可以检测新用户何时注册您的应用程序 或者我是否必须将用户存储在数据库中并在每次用
  • CKEditor 4 下拉按钮插入占位符

    我发现两个独立的插件 StrInsert and Placeholder 第一个插件创建插入字符串的下拉菜单 第二个插件插入占位符 here s the screenshot for StrInsert plugin and for Pla
  • 如何使用 ggplot2 在世界地图上绘制单个点?

    在世界地图上 如何绘制单个点 all states lt map data usa p lt p geom polygon data all states aes x long y lat group group legend FALSE
  • 调用 Scan 操作时如何解决(AccessDeniedException):用户:arn:aws:sts ...无权执行:dynamodb:对资源进行扫描..”?

    我正在尝试使用 Elastic Beanstalk 和 Flask 将类似 Instagram 的应用程序部署到 AWS 使用后电子部署命令 我能够访问应用程序主页 这不需要访问 DynamoDB 表 当我尝试登录时 应用程序应访问 Dyn
  • SQL Server 2008 中的 PIVOT/UNPIVOT

    我得到的子 父表如下 主表 MasterID Description 子表 ChildID MasterID Description 使用 PIVOT UNPIVOT 如何在单行中获得如下结果 if MasterID 1 有 x 子记录 M
  • 过早重构? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们都听说过过早优化 http en wikipedia org wiki Program optimization When to optim
  • 在数据库表中标记已删除的记录

    有时您想将数据库表记录标记为已删除 而不是永久删除它 对吗 你是怎样做的 到目前为止 我一直在使用布尔 已删除 字段 但我不确定这是否是一个好的方法 就是这样 一个布尔字段 指示记录已被删除 我用过几次 我称该字段为IsDeleted 这通
  • 为什么我的 bash 函数返回错误的值?

    fact if 1 eq 1 then return 1 else y expr 1 1 fact y b 1 return b fi echo enter read n fact n echo 这是一个求数字阶乘的程序 输出在 5 以内都
  • 如何读取用户上传的文件,而不将其保存到数据库

    我希望能够读取用户上传的 XML 文件 小于 100kb 但不必先将该文件保存到数据库中 我不需要当前操作之后的文件 其内容被解析并添加到数据库中 但是 解析文件不是问题 由于本地文件可以通过以下方式读取 File read export
  • eclipse sts 4 中没有集成图视图?

    甚至不再有创建 spring bean 配置文件的选项 从 3 9 过渡到 4 的过程中 大量功能消失了 如果是这样的话 似乎他们在 Eclipse 端为 IDE 不可知论牺牲了相当多 Spring Tools 4 不再包含对 Spring
  • NumPy 堆栈或将数组附加到数组

    我从 NumPy 开始 给定两个np arrays queu and new path queu 0 0 0 1 new path 0 0 1 0 2 0 我的目标是得到以下queu queu 0 0 0 1 0 0 1 0 2 0 我试过
  • 如何将github存储库配置为spring云服务器的配置存储库?

    我已经创建了一个 github 存储库https github com Nisarg04 microservices config repo git 我希望将其视为配置存储库 另外 我有一个 Spring Cloud 服务器 它从本地存储库
  • Objective-C 变量...指向自身?

    我在 Apple 的一些用于处理键值观察的示例代码中发现了这种构造 添加观察者时 您可以添加一个上下文 以 void 变量的形式 该上下文可以唯一标识 KVO 调用 如果您希望多个 KVO 调用触发相同的操作 则特别有用 因为单个上下文可以
  • Pandas/Python 中的分块、处理和合并数据集

    有一个很大的数据集 其中包含字符串 我只想使用宽度通过 read fwf 打开它 如下所示 widths 3 7 9 7 tp pandas read fwf file widths widths header None 这会帮助我标记数据
  • 使用 MXnet 时如何保存模型

    我正在使用 MXnet 训练 CNN 在 R 中 并且可以使用以下代码训练模型 不会出现任何错误 model lt mx model FeedForward create symbol network X train iter ctx mx
  • 学习 UML 的最佳来源是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 共享内存上的 spsc_queue

    我尝试了几个小时 这个问题几乎让我发疯 我想创建一个spsc queue在共享内存上 队列中的每个元素都是一个mq item t结构如下 typedef struct mq item t mq item type type union st
  • Eloquent 关系同步也会删除吗?

    更新模型并同步关系时 如果我不传入所有已存在的 id 该关系是否会被删除 你决定 sync有第二个参数 默认为true并负责分离 model gt relationship gt sync 1 2 3 model gt relationsh
  • 从 UIWebView 读取 HTML 内容

    是否可以读取已加载到的网页的原始 HTML 内容UIWebView 如果没有 是否有另一种方法可以从 iPhone SDK 中的网页提取原始 HTML 内容 例如 NET 的等效方法 WebClient openRead 第二个问题其实更容
  • Julia 多次调度失败

    v06 我想写一个需要 2 到 3 个参数的签名 第一个是整数或整数向量 第二个是整数向量或整数矩阵 第三个是整数向量或未指定 我第一次尝试是这样的 function foo a Union Integer Vector Integer b