You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过类型定义访问方法?实现结构体类型与值类型均可调用函数

Julia结构体类型与实例共用方法的修改方案

你的代码问题在于colnames只定义了接受MyStruct实例的方法,而构造函数里传入的是类型MyStruct,导致方法匹配失败。以下是修改后的可运行代码:

struct MyStruct
    names
    function MyStruct()
        names = colnames(MyStruct)  # 现在可以正常调用类型方法
        new(names)
    end
end

# 定义针对MyStruct类型的colnames方法
colnames(::Type{MyStruct}) = ["A", "B"]

# 定义针对MyStruct实例的colnames方法
colnames(T::MyStruct) = T.names


m = MyStruct()
colnames(m)  # 正常返回 ["A", "B"]

修改说明:

  • 新增colnames(::Type{MyStruct})方法,专门处理类型调用的场景,构造函数里的colnames(MyStruct)就能匹配到这个方法。
  • 实例方法colnames(T::MyStruct)直接返回实例自身的names字段,既符合结构体的封装逻辑,也满足你通过值类型调用的需求。

内容的提问来源于stack exchange,提问作者BAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:42:38