highlevel
ve lowlevel
adlı alt projeler içeren iki alt yapım yapmam var mı? Altproject highlevel
, alt projeye lowlevel
bağlıdır.Scala'da bir paket nesnesini geçersiz kılmak nasıl önlenir?
highlevel/src/main/scala/com/example/foo/package.scala
yılında:
package com.example
package object foo {
def bar = ???
}
lowlevel/src/main/scala/com/example/foo/package.scala
yılında: Her iki alt projeler paketine com.example.foo
katkıda
package com.example
package object foo {
def wee = ???
}
yaşıyorum sorun olduğunu ben highlevel
projesinde com.example.foo
kullandığınızda, wee
lowlevel
'com.example.foo
paket nesnesitarafından "gölgede kalıyor" olduğundan tanımlanmadı. highlevel
alt projesine bar
ve wee
birlikte sahip olmanın herhangi bir yolu var mı?
(ilgilenenler için, kullanım durumunda bar
ve wee
örtük dönüşümler olduğunda geçerli:. wee
lowlevel
tanımlanan bir tür içeren bir dönüşüm ele alabileceğinizi ise bar
, highlevel
tanımlanan bir tür içeren bir dönüşüm bakacaklarını Hem alt projeler gerek düşük düzeyli tip dönüşümleri wee
.)
Evet, bu soruyu yayınladıktan kısa bir süre sonra karşılaştım [SI-4964] (https://issues.scala-lang.org/browse/SI-4964), bu yüzden kasıtlı davranış ve tam olarak nedenini söyledin . –
Örnekler için Scalaz kaynağına baktığımda, bunu sadece 'series/8.0.x' dalında ve' series/7.3.x' dalında iki tane yapan bir paket nesnesi bulabilirdim. Bir şey mi eksik? –
Bu çözüm, yalnızca yüksek düzeyli paket nesnesi 'com.example.foo.LowLevel' öğesini genişletirse çalışır gibi görünüyor. Değilse, düşük düzeyli kod, "LowLevel" de tanımlanan kodu çağırırken çalışma sırasında bir "java.lang.NoSuchMethodError" atar. –