2015-04-18 28 views
11

Yalnızca bazı yardımcı işlevler, sınıflar yok, nesne içermeyen bazı Utils.kt dosyam var. Ve bu işlevlerin bazı ortak sabit değerler kümesini kullandığını varsayalım.Kotlin'de özel dosya sabitine sahip olmanın bir yolu var

Yani böyle bir şey yapmak:

package myapp 

private val CONST1 = 1 
private val CONST2 = 2 

public fun function1() {} 
public fun function2() {} 

Maalesef Kotlin "Bütün pakete mevcut" olarak özel davranır

. Yani CONST1 ve CONST2 aynı pakette bulunan tüm dosyalar için kullanılabilir. Onları izole etmenin tek yolu, bu dosyayı ayrı bir pakete taşımaktır.

Ancak, her biri kendi başına özel sabitleri olan çeşitli yardımcı program dosyaları varsa ne olur? Öyleyse sadece iki seçeneğim var: her birini benzersiz bir pakete taşıyın veya pes etmeyin ve her yerden erişilebilen varlıklardan kurtulun.

Her iki yol da dağınıklık yaratıyor.

Herhangi bir seçenek veya öneri?

(gnc: aslında, ben bu KOTLIN beni rahatsız o nadir şeylerden biridir söylemeliyim - bazı sözdizimi kesmek kullanmadan (bazı varlık dosya yerel olmak yapmak için hiçbir şekilde): bu bütün mevcut ya var paket veya herkes hiç) için

UPD: Bu soru (kabul cevabı bakınız) private görünürlük ile

+0

@JaysonMinard kabul edilmiş bir yanıtın yazarı zaten mevcut durumun durumunu yansıtacak şekilde güncelleştirdi – dimsuz

+0

İyi, sonra diğer düşürdüm Artık ihtiyaç duyulmadığı için cevap ver: –

+0

/* kotlin programming */ – voddan

cevap

6

Üst düzey bildirimleri sadece tanımlandıkları dosyasında görülebilir artık geçersiz olabilir.

(orijinal cevap, soru sorulduğunda geçerlidir: Kotlin, dosya yerel kapsamı ile ilgili herhangi bir konsept içermez ve benim bildiğim kadarıyla, bunu tanıtmak için bir planım yoktur. Paket kapsamını sevmezseniz (neden?), işlevlerini ve kullandıkları özel sabitleri kapsülleyen bir object yaratabilirsiniz.

+0

Paket kapsamını beğenmedim çünkü birçok dosya-yerel değişkene sahip olma eğilimindeyim ve tüm tamamlama pop-up'larını karıştırıyorlar ve genellikle onları her yerde görmelerine gerek yok. kn Ben bir 'object' kullanabilirim, ama bu bir hack gibi görünüyor ... – dimsuz

+0

Peki, Kotlin içinde paket yapısı dizin yapısına karşılık gelmek zorunda kalmaz, böylece her dosya için ayrı bir paket değiştirmeden ayarlayabilirsiniz projenizdeki dosyaların yapısı. – yole

+0

Evet, fark, sadece sıradışı hissediyor. Bu önerilen yol mu? Aslında, Kotlin projemi tüm bu hususları göz önünde bulundurarak nasıl organize edileceğime dair küçük bir pancar hissediyorum: varsayılan paket kapsamı, dosya başına keyfi paket adı. Ve en iyi uygulama ya da Kotlin yazarlarının tavsiyelerini özlüyorum. Java burada daha sıkı ve bu bana bazı sipariş getiriyor gibi geliyor ... – dimsuz

İlgili konular