开发注册包的问题

不得不说,文档中英文切换很难受,有些点也没有讲到
(暂时)请问

  1. 开发包的时候的uuid是在哪里获取的?还是随便生成一个就行?

语法区

  1. 模块中有相同名字,但参数不同的函数,怎么指定一个特定的导出
  2. mutable struct泛型一直报错,说没有where,加了之后说invalid,有示例吗 :disappointed_relieved:

有没有什么典型的blog/repository供参考,谢谢

emmm GitHub - JuliaLang/Example.jl: Example Julia package repo. 可以略微参考一下

可以通过 pkg> generate 来生成一个包,然后把它的 UUID 抄过来。也可以利用 GitHub - JuliaCI/PkgTemplates.jl: Create new Julia packages, the easy way

模块中有相同名字,但参数不同的函数,怎么指定一个特定的导出

导出的是 Symbol 所以不允许特定的导出。如果需要的话,不妨把你的函数命名拆分开来,例如把
foo 拆分成 foo_foo 然后只导出 foo

然后把它的 UUID 抄过来

我用UUIDs.uuid1生成了一个UUID,能用吗?

可以的,只要是没有被占用的 UUID 就行。你甚至可以自己创造一个,比如说 00000000-1111-2222-3333-444444444444 这也是一个合法的在使用的UUID

一个新问题:
2. mutable struct泛型(写了默认类型)一直报错,说没有where,加了之后说invalid,有示例吗 :disappointed_relieved:

  1. 这为什么报错了啊
julia> struct u{T}
       v::T
       end

julia> function v!{T}(y::u{T})
       y.v=0
       end
ERROR: UndefVarError: v! not defined

应当是

function v!(y::u{T}) where T
       y.v=0
end

语法和struct不一样

建议多看看文档

thx
然而文档的“函数”和“类型”章节都未提到

还有一个章节叫 Methods (方法)

注意大小写
发贴前自己多检查检查

az az az
我都干了些什么!

  1. 按照方法那章的示例,我想写个函数
julia> function example(x::a{b})where a where b
       end
ERROR: TypeError: in Type{...} expression, expected UnionAll, got a value of type TypeVar
Stacktrace:
 [1] top-level scope
   @ REPL[11]:1

julia> function example(x::a{b})where {a b}=true
       end
ERROR: syntax: unexpected "="
Stacktrace:
 [1] top-level scope
   @ none:1

所以这边怎么写啊 :cold_sweat:
(主要因为需要b参数)

所以可以这样写吗
还是可以以其它方式获取b类型?

按照你的需求,a 需要被定义成一个abstract type:

abstract type A{T} end

function foo(x::A{T}) where T
end

该函数要接受的一定是A的子类的对象

1 个赞
  1. 如果包中需要放数据(例如二进制文件),作为程序调用所需,应该放在哪个文件夹中?
    (去翻了一堆仓库,没有发现结果)

简单一点的话就是直接放在任意的文件夹下,比如说 assets/mybinaryfile,然后在 src/script.jl 下通过 joinpath(@__DIR__, "..", "assets", "mybinaryfile") 调用

复杂一点的就是构造 Artifacts

2 个赞