- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个函数,用于在整数向量组成的向量上进行分派(dispatch)。但是,当我尝试使用它时,我收到了 MethodError:
julia> foo(x::Vector{Vector{<:Integer}}) = last(last(x));
julia> x = [[1], [2, 3], [4, 5, 6]]
3-element Array{Array{Int64,1},1}:
[1]
[2, 3]
[4, 5, 6]
julia> foo(x)
ERROR: MethodError: no method matching foo(::Array{Array{Int64,1},1})
Closest candidates are:
foo(::Array{Array{#s17,1} where #s17<:Integer,1}) at REPL[1]:1
为什么这不起作用?
最佳答案
这里的符号有点微妙。您为 x
声明的参数类型参数,Vector{Vector{<:Integer}}
是 Vector{Vector{T} where T<:Integer}
的简写符号:
julia> Vector{Vector{<:Integer}}
Array{Array{#s17,1} where #s17<:Integer,1}
julia> Vector{Vector{T} where T<:Integer}
Array{Array{#s17,1} where #s17<:Integer,1}
最重要的是,请注意 Vector{Vector{T} where T<:Integer}
不等于Vector{Vector{T}} where T<:Integer
。在前一种类型中,每个内向量的内向量元素的具体整数类型可以不同。在后一种类型中,所有内部向量都具有相同具体整数类型的元素。
此外,实例化Vector{Vector{T} where T<:Integer}
类型的文字数组是很棘手的。 ,因为文字数组构造函数提升了其参数的类型:
julia> typeof([Int8(1), Int16(2)])
Array{Int16,1}
julia> typeof([Int8[1], Int16[2, 3]])
Array{Array{Int16,1},1}
但是,可以按如下方式完成,
julia> foo(x::Vector{Vector{<:Integer}}) = last(last(x));
julia> y = Vector{<:Integer}[Int8[1], Int16[2, 3], Int32[4, 5, 6]]
3-element Array{Array{#s17,1} where #s17<:Integer,1}:
Int8[1]
Int16[2, 3]
Int32[4, 5, 6]
julia> foo(y)
6
我们广泛使用了 typed array initializers .
或者,如果您愿意要求每个内部数组的元素具有相同的具体整数类型,则可以按如下方式定义函数:
julia> bar(x::Vector{Vector{T}}) where T<:Integer = last(last(x));
julia> x = [[1], [2, 3], [4, 5, 6]]
3-element Array{Array{Int64,1},1}:
[1]
[2, 3]
[4, 5, 6]
julia> bar(x)
6
请注意,此方法不会接受具体整数类型不同的向量向量:
julia> bar(y)
ERROR: MethodError: no method matching bar(::Array{Array{#s17,1} where #s17<:Integer,1})
Closest candidates are:
bar(::Array{Array{T,1},1}) where T<:Integer at REPL[35]:1
有关相关讨论,请参阅 Julia 手册中关于 UnionAll 的部分。类型。
关于julia - 在向量的参数向量上调度时出现 MethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59758161/
我编写了一个函数,用于在整数向量组成的向量上进行分派(dispatch)。但是,当我尝试使用它时,我收到了 MethodError: julia> foo(x::Vector{Vector{ x =
我在运行以下 Julia 代码片段时遇到错误 using GR, Interact t = 0:0.01:1 @manipulate for phi=0:0.1:6.28 plot(cos.(2
请找到代码的一部分: button = Login_form.button_with(:name => 'Submit') loggedin_page = Login_form.submit(butt
我正在从 Python 迁移,对 Julia 还是很陌生,但事实证明,这个很难弄清楚。我希望以后通过 PackageCompiler 编译包以供以后在其他语言中使用,所以我需要能够导出 C 可调用方法
我是 Julia 和 JuMP 的新手,这是我将要使用的库。 尝试定义以下约束,在定义变量后,我收到一个错误: for r = 1:11 for d = 1:7 for s =
我正在尝试做一个字符串数组的样本,为数组的每个元素合并权重。具体来说, new_name_event = sample(events,Weights(dict_betas_choices[string
我试着玩弄 this Julia 文档中的示例。我的尝试是将细胞分成两部分,每部分的蛋白质含量都是一半。 using OrdinaryDiffEq const α = 0.3 function f(d
我有一个运行良好的 Julia 应用程序,但我想制作一个已编译且更易于分发的版本。据我了解,这是 PackageCompiler 的工作. 我能够构建可执行文件,并且在询问它的 --help 时它运行
Julia -纽比在这里! (请对我放轻松,原谅我糟糕的英语和我的编程技巧)。 我正在做一个 Julia (1.3.1) 项目。 (我正在使用 Jupyter)。 它是关于光学的;许多狭缝的衍射。 (
大家好,这里是编程新手 我正在尝试使用 Julia 和 GLPK 解决线性编程问题,重点是尝试,因为到目前为止,无论我尝试什么,我都会遇到错误。这是代码: using JuMP, GLPK m = M
大家好,这里是编程新手 我正在尝试使用 Julia 和 GLPK 解决线性编程问题,重点是尝试,因为到目前为止,无论我尝试什么,我都会遇到错误。这是代码: using JuMP, GLPK m = M
我正在尝试通过阅读找到的文档教程来学习一些 PINN 工作的 NeuralPDE.jl 语法 here . 在使用 PhysicsInformedNN(chain, strategy) 函数构建 PI
我正在使用 Julia,我尝试测试一个创建图像并根据给定字符串分配红色值的函数。只要听到这句话,我相信您能想到我本可以做的一百万件事来接收错误消息,但是这个错误: 在第 13 行生成。 这是第 13
我正在使用 Julia,我尝试测试一个创建图像并根据给定字符串分配红色值的函数。只要听到这句话,我相信您能想到我本可以做的一百万件事来接收错误消息,但是这个错误: 在第 13 行生成。 这是第 13
我刚刚创建了一个新的 Rails API 应用程序,我正在尝试第一次运行它。我安装了 foreman gem 并使用命令 foreman start 启动服务器但我收到这些错误: Exiting
我是一名优秀的程序员,十分优秀!