Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 28269|Yanıt: 1

[Kaynak] Java'da Tuple kullanımı

[Bağlantıyı kopyala]
Yayınlandı 31.08.2021 11:22:41 | | | |
Tuple'ların bilgisayar alanında özel bir anlamı vardır, bu isim biraz yabancı gelebilir ve kod yazmada neredeyse hiçbir uygulama senaryosu yoktur, ancak şaşırtıcı bir şekilde, tuple'lar programlamayla yakından ilişkilidir, bazı öğrenciler ilişkisel veritabanlarında "kayıtlar" için başka bir akademik adın "tuples" olduğunu, bir kayıt bir tuple'dur, bir tablo bir ilişkidir, kayıtlar tablolardan oluşur, tuple'lar ilişkiler oluşturur, bu ilişkisel veritabanlarının temel kavramıdır.

Tuples, ilişkisel bir veritabanının ayrılmaz bir parçasıdır, ancak programlamada o kadar vazgeçilmez değildirler. Bazı programlama dillerinin kendi tuple sözdizimi vardır; örneğin python, F#, haskell, scala vb., diğerleri ise daha popülerdir ancak tuple sözdizimi yoktur, örneğin Java, JavaScript, C++, C# vb. gibi.

Tuple'lar, diziler ve nesneler gibi vazgeçilmez programlama öğeleri değildir, ancak kullanımları özellikle bir fonksiyonun birden fazla değer döndürmesi gerektiğinde kod yazmak için çok kullanışlı olabilir. Bu durumda, yaygın uygulama bir nesneyi tanımlamak, fonksiyonun döndürmesi gereken değeri nesnenin özniteliği olarak ayarlamak ve ardından fonksiyonun dönüş değer tipini nesnenin tipine ayarlamaktır. Ya da bu fonksiyon, belirli verinin var olduğu bir harita veri yapısını döndürebilir. Ancak, her iki yaklaşımın da kusurları vardır ve ilk yöntem güvenilirdir, ancak kod alışılmadık derecede şişiricidir. Gereksinimler çok basittir, fonksiyon birden fazla değer döndürdüğü sürece, ancak bu yöntem önceden bir tür tanımlamayı, sonra örneklemeyi, ardından örnek özelliklerini ayarlamayı ve sonunda geri dönmeyi gerektirir ki bu çok verimsizdir. İkinci yöntem hızlı olsa da yeterince güvenli olmasa da, fonksiyon içinde haritada ne tür bir değerin saklandığını bilebilir, ancak fonksiyon dışında, bu fonksiyonun dönüş değerinin bir harita olduğunu bilinir; haritada hangi değerlerin saklandığı, hangi türün bilinmediği çok kişilik geliştirme projelerinde bu dezavantaj özellikle açıktır; maalesef bu uygulama bazı dinamik tipli dillerde tercih edilen çözümdür ve bu da dinamik tipli dillerin zayıf güvenlik ve okunabilirlikten şikayet edilmesinin temel nedenlerinden biridir. Bu nedenle, bu tür sorunlara en iyi çözüm tuple kullanmaktır.

Sözdizimi kendisi tuple'ları desteklediği dillerde, tuple'lar parantez ile temsil edilir; örneğin (int, bool, string) üçlü tiptir ve değeri (1, true, "abc") olabilir. Her tuple tipinin benzersiz olduğu belirtilmelidir; (int, bool), (bool, int), (string, double) hepsi ikilidir, ancak burada belirli bir tuple'ı fonksiyonun dönüş değeri olarak alırsanız, bu yöntem daha önce bahsedilen özel tiplerle ilk çözüm kadar iyi olmasa da, map ile ikinci çözümden çok daha iyidir, en azından tuples kullanılarak fonksiyonun kaç değer döndüreceğini bilebilir, Bu değerler ne tür bir değer ve harita kullanarak ikinci bir şemayı kodlamanın basit ve hızlı olması avantajına sahiptir.

Neyse ki, bu programlama dilleri artık genel dilleri destekliyor ve yerleşik olmayan tuple'ların uygulanması son derece basit hale geldi, ancak sonuçta bu dil dışı yerleşik bir sözdizimi öğesidir ve kesinlikle yerel tuple'lar kadar kullanışlı değildir.

Aşağıda, kendi resmi ana sayfası ve yüzlerce github yıldızı olan üçüncü taraf Java tuples kütüphanesi tanıtıyor; bu kütüphane, Java tuple alanında neredeyse tekel konumunu oynuyor.

Javatuple'lar maksimum 10 uzunluğunda bir tuple tanımlar, ama bence 10 tuple'daki eleman sayısı zaten çok fazla ve neredeyse hiç okunabilirlik yok. Tuple sınıfları aşağıdaki şekilde tanımlanır:

Birim<A> (1 eleman)

Çift<A,B> (2 eleman)

Üçlü<A,B,C> (3 eleman)

Dörtlü<A,B,C,D> (4 unsur)

Beşli<A,B,C,D,E> (5 eleman)

Altlı<A,B,C,D,E,F> (6 eleman)

Yetmiş<A,B,C,D,E,F,G> (7 eleman)

Oktet<A,B,C,D,E,F,G,H> (8 eleman)

Ennead<A,B,C,D,E,F,G,H,I> (9 eleman)

On Yıl<A,B,C,D,E,F,G,H,I,J> (10 eleman)

Bu arketipik sınıflar genel sınıflardır, bu yüzden açı parantezlerindeki harfler rastgele tiplerle değiştirilebilir. Aşağıda ikili kod örneği verilmektedir





Çıkarımlar yaparak, diğer tuple tipleri de aynı şekilde kullanılır.

Java'nın tuple'ları dilin kendisi tarafından desteklenmediği için, kod Cava dilinde ve daha az zarif görünüyor. Ancak, kod yazarken, yazmanın kolaylığı verimliliği artırabilir, ayrıca kodun kendisinin ifade ettiği anlama daha fazla dikkat etmek daha önemlidir; yani tuple'un anlamını (işlevini) kodu geliştirmek için kullanmak ve nasıl yazılacağı aslında sadece ikincil bir şeydir.

Son olarak, genel açı parantezlerindeki tipin Java'nın temel tipi olamaz, temel tipi kullanmak istiyorsanız, aynı zamanda kutulanmış temel tip olması gerekir; örneğin int tipi tam sayıya dönüştürülmelidir ve bool tipi Boolean tipine karşılık gelir.




Önceki:POI CellStyle, hücre arka planı rengini ayarlar
Önümüzdeki:.NET/C# MailKit Posta Gönderme Eğitimi [Kaynak Kodu ile]
 Ev sahibi| Yayınlandı 15.09.2021 10:55:08 |
Maven kullanarak aşağıdaki gibi bağımlılıklar yaratmalısınız:


javatuple'lar, en fazla on dönüş değeri oluşturmamıza olanak tanır


Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com