用于具有多重分派的数组数组的 Julia 参数函数

2024-01-03

我正在尝试编写两个同名的函数,它们可以利用 Julia 的多重调度功能,并涉及数组和数组数组。

假设有这三个输入变量

# typeof(a) => Array{Array{T,N},1}
a=Array[[1,2,3],[4,5,6]]

# typeof(b) => Array{Int64,1}
b=[1,2,3]

# typeof(c) => Array{Array{Float64,1},1}
c=[rand(10) for i in 1:2]

我这样写两个函数

function test(x::Array{Array})
    println("received an array of array => $(typeof(x))")
end

function test{T<:Number}(x::Array{T,1})
    println("received a vector. converting.....")
    nx = Array[x]
    test(nx)
end

上述方法适用于a and b但不是c.

test(a)
# received an array of array => Array{Array{T,N},1}

test(b)
# received a vector. converting.....
# received an array of array => Array{Array{T,N},1}

test(c)
# LoadError: MethodError: `test` has no method matching test(::Array{Array{Float64,1},1})
# while loading In[37], in expression starting on line 1

现在如果我将函数定义更改为x::Array{Array{Float64,1},1}这会起作用。但我的问题是不是Array{Array}应该采用任何类型的数组数组吗?

应如何使用数组数组上的内部类型参数?


Array{Array} 不应该接受任何类型的数组数组吗?

是的,也不是……应该是这样,但不是这样。

我想你已经知道了Julia 的类型参数是不变的.

注意Array本身是一个参数类型,所以你应该使用Array{T} where T<:Array代替Array{Array}:

function test{T<:Array}(x::Array{T})
    println("received an array of array => $(typeof(x))")
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于具有多重分派的数组数组的 Julia 参数函数 的相关文章

随机推荐

  • Android - 翻转动画不平滑翻转

    我想让我的图像水平翻转4次 同时缩小 我有以下用于翻转的代码 ObjectAnimator flipAnimation ObjectAnimator ofFloat view rotationY 0 0f 1440f flipAnimati
  • Django 模板中的双循环

    我已经尝试做这个嵌套循环几个小时了 但到目前为止我的结果都不起作用 这是我到目前为止所拥有的 索引 html for category in categories div class col md 12 column category li
  • 如何确定哪个 Xlint 选项对应于编译器警告?

    我的软件构建使用 Xlint Werror所以我经常遇到破坏我的构建的编译器警告 每隔一段时间 我都会遇到需要抑制的警告 但总是很难弄清楚是哪个警告Xlint选项会抑制我看到的警告 我给你举一个具体的例子 我最近遇到过 WARNING mo
  • 特定计划任务运行失败时如何发送电子邮件

    我有一个 exe 文件 每天由 Windows 2008 上的任务计划程序执行 如果该脚本无法启动 或者脚本在执行过程中失败 我希望收到电子邮件通知 有许多让任务计划根据事件日志条目发送电子邮件的示例 但是 我只想在我的特定计划任务失败时收
  • 异步等待与elasticsearch搜索/滚动

    我在用着await作为我搜索的一部分 但作为我必须使用的 30000 项scroll 问题是搜索的初始部分在scroll是这样的await火灾和功能继续进行 我应该做什么来阻止这种情况 var allTitles try await cli
  • 错误:必须是数据库的所有者

    我想删除一个名为 mysitedb 的特定数据库 所以我所做的是打开终端并输入命令 dropdb mysitedb 然后弹出错误 错误 必须是数据库 mysitedb 的所有者 我知道特定数据库的用户名和密码 但不知道删除它 我是 post
  • 将图像写入本地服务器

    Update 去年接受的答案很好 但今天我会使用其他人都使用的包 https github com mikeal request https github com mikeal request Original 我正在尝试获取 google
  • Swift 3 UIView 动画

    自从将我的项目升级到 swift 3 以来 我的自动布局约束动画不起作用 更具体地说 它们是捕捉到新位置而不是动画 UIView animate withDuration 0 1 delay 0 1 options UIViewAnimat
  • 如何在Eclipse中创建多个同名的项目?

    我是 Eclipse 新手 正在使用 Eclipse Indigo JAVA EE IDE 版本学习 Eclipse 我想在同一个工作区中创建多个同名的项目 可以吗 如果是 如何创建多个同名项目 谢谢 约格什 不 这对于 Eclipse I
  • Delphi XE2 VCL 样式、从 TLabel 删除样式或禁用类换肤

    使用 XE2 VCL 样式 我想禁用 TLabel 或属性 sfTextLabelNormal 的换肤 我已经尝试了其他问题的各种解决方案 例如使用 Engine UnRegisterStyleHook 但它没有效果 The TLabel
  • Go 如何对常量进行算术运算?

    我一直在读这个关于 Go 中常量的帖子 https blog golang org constants 我试图了解它们如何在内存中存储和使用 您可以在 Go 中对非常大的常量执行操作 只要结果适合内存 您就可以将该结果强制为某种类型 例如
  • PHP - 使用 MySQL 数据库中的记录作为值创建复选框

    我是 php 编程的新手 我不知道我哪里出了问题 因为我的 php 代码无法执行 正如标题所说 我正在尝试在我的网站中创建复选框 但是这些值将来自 mysql 数据库 我在 MySQL 数据库中有一个名为 campus 的表 它有 2 列呼
  • Maven 安全问题

    使用 Maven 是否存在安全问题 我今天在我的主项目中使用 Ant 但在我编写程序尖峰的 示例 项目中确实使用 Maven 我确实喜欢 Maven 的某些部分 但对通过该工具下载 jar 感到担忧 这是毫无根据的担忧吗 http repo
  • 如何按定义的顺序编写 Java 属性?

    我正在使用 java util Properties 的 store Writer String 方法来存储属性 在生成的文本文件中 属性以随意的顺序存储 这就是我正在做的 Properties properties createPrope
  • RTK 查询结果不可解析 JSON

    我这样做是为了学习 React toolkit import createApi fetchBaseQuery from reduxjs toolkit query react export const getIPv4AddressApi
  • 添加 .so 作为 php 扩展名

    我有一个使用 SWIG 生成的 so 文件 我想使用那里定义的函数作为 php 扩展 如何将它们添加为 php 扩展 我将 so添加到扩展目录中 并在php ini中添加一行 extension example so 然后重新启动apach
  • “命名颜色在 iOS 11.0 之前不起作用。”即使部署目标 >= iOS 11.0

    我不断收到 Xcode 编译器错误 命名颜色在 iOS 11 0 之前不起作用 即使 Xcode 中的部署目标是 iOS 11 0 我尝试将部署目标更改为 12 2 并清理构建文件夹 但错误仍然存 在 我的项目部署设置是 Targeted
  • CSS3 中漂亮的插入边框

    我真的很喜欢最近在管子上看到的这种边框样式 如果您只是在网站上查看它可能看起来会更好 http markdotto com bootstrap http markdotto com bootstrap 我对他们如何创建这种效果特别感兴趣 似
  • 点击 UITextField 时防止键盘出现

    我正在使用一个UI文本字段显示计算结果 但我don t希望当用户点击时显示键盘UI文本字段 我使用 UITextField 是因为我仍然希望用户能够将计算复制并粘贴回 UITextField 但我不希望显示键盘 UI键盘将隐藏仅在显示键盘后
  • 用于具有多重分派的数组数组的 Julia 参数函数

    我正在尝试编写两个同名的函数 它们可以利用 Julia 的多重调度功能 并涉及数组和数组数组 假设有这三个输入变量 typeof a gt Array Array T N 1 a Array 1 2 3 4 5 6 typeof b gt