【问题标题】:Make custom type non-broadcastable使自定义类型不可广播
【发布时间】:2020-04-15 16:10:47
【问题描述】:

说我有

struct Foo
    x::Int
end
bar(f::Foo, val::Int) = f.x + val

我想针对这个奇异的对象进行广播

foo = Foo(1)
z = bar.(foo, collect(1:10))

但我得到MethodError: no method matching length(::Foo)

如何声明Foo 不可广播?

【问题讨论】:

    标签: julia


    【解决方案1】:

    您可以通过返回自身来缩短广播

    import Base.Broadcast.broadcastable
    broadcastable(f::Foo) = Ref(f)
    

    https://docs.julialang.org/en/v1/base/arrays/#Base.Broadcast.broadcastable

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      相关资源
      最近更新 更多