【发布时间】:2017-04-24 16:33:04
【问题描述】:
我想使用两个包:CorpusLoaders.jl 和 WordNet.jl
- CorpusLoaders.SemCor 导出
sensekey(::SenseTaggedWord) - WordNet 导出
sensekey(::DB, ::Synset, ::Lemma)
我想同时使用sensekey 方法。
例如
对于一些混合的项目列表:mixedlist::Vector{Union{Tuple{SenseTaggedWord},Tuple{DB, Synset,Lemma}}。
即列表中的项目是SenseTaggedWord 的1 元组和DB、Synset 和Lemma 的3 元组的混合。
for item in mixedlist
println(sensekey(item...)
end
应该可以。 这个例子有点滑稽,因为我为什么要这样混合它们。 但是,希望它有助于说明一般情况下的问题。
尝试using CorpusLoaders.SemCor, WordNet 将两个结果都引入WARNING: both WordNet and Semcor export "sensekey"; uses of it in module Main must be qualified.
手动导入两者:import CorpusLoaders.SemCor.sensekey; import WordNet.sensekey 导致 WARNING: ignoring conflicting import of Semcor.sensekey into Main
可以做什么?我想要他们两个,并且由于多次调度,他们并没有真正冲突。
鉴于我正在编写的 CorpusLoaders.jl 是一个包,我确实有更多选择,因为我可以让我的 CorpusLoaders.jl 依赖于 WordNet.jl。 如果我这样做了,我可以在 CorpusLoaders.jl 中说
import WordNet
function WordNet.sensekey(s::SenseTaggedWord)...
这将使它们都起作用。 但这意味着需要 WordNet 作为 CorpusLoaders 的依赖项。
我想知道如何为包的消费者解决问题——而不是包的创建者。
【问题讨论】:
-
不,别说了,我的回答主要是关于用户案例。希望有同样问题的人需要比冯扬的答案更详细(或 lot :p )的人会在下面碰到我的问题:D 我只是想将我的 cmets 移到一个答案中以将它们从来了,呵呵。我现在将删除上面的 cmets 种子 :p 感谢您抽出宝贵时间进行编辑/澄清!