Kendi tercihlerinize bağlı olarak, sizin için daha fazla veya daha az ilgi çekici olabilecek birkaç neden:
"Sözdizimsel Şeker" olduğu için sadece indirim yapmayın. Bir şeylerin sadece sözdizimsel bir şeker olduğunu söylese de, hayatını tatlandıran tüm şekerden sonra - bir programcı olarak bir kahve veya çay içicisi gibi.
Singletons - Her Scala object
doğası gereği bir singletondur. Java dünyasında, insanların tekilleri farklı şekillerde uyguladıklarını ve uygulamalarında bir hata yapmadıklarından daha sık olduklarını göz önüne alarak, Scala'da olduğu kadar basit bir hata yapamazsınız. Yazma object
yerine class
bir tekil yapar ve bitirdiniz.
Statik yöntemlere erişim: Java'daki statik yöntemlere nesnelerden erişilebilir. Örneğin, bir sınıf olduğunu varsayalım C
statik yöntemle f
ve bir nesnenin c
Çeşidi C
. Öyleyse aramanız gerekirC.f
, fakat Java ( c.f
Scala arka planından geldiğinizde hiçbir anlam ifade etmiyor) kullanmanıza izin vermez (bir uyarı ile de olsa) , çünkü nesnelerin f
gerçekten bir yöntemi yoktur .
Ayrımı temizle: Java'da statik ve statik olmayan nitelikleri ve yöntemleri bir sınıfta karıştırabilirsiniz. Disiplinli çalışırsanız, bu bir sorun olmaz, ancak siz (veya bu konuda başka biri için) yapmazsanız, sonunda statik ve statik olmayan parçaları bir araya getirmiş olursunuz ve hızlı bir şekilde anlatmak zordur. statik olan ve olmayan olan. Scala'da, eşlikçi nesnesinin içinde bulunan her şey, karşılık gelen sınıfın çalışma zamanı nesnelerinin bir parçası değildir, ancak statik bir bağlamda bulunur. Tam tersi, eğer bir sınıfın içine yazılırsa, o sınıfın örnekleri için kullanılabilir, ancak statik bir bağlamdan değil. Bu, sınıfınıza statik ve statik olmayan başlatıcı blokları eklemeye başladığınızda, özellikle Java'da ağırlaşır. Bunun dinamik yürütme sırası açısından anlaşılması çok zor olabilir.
Daha az kod: statik kelimesini her bir özniteliğe veya yönteme bir eklemenize gerek kalmaz object
, bu nedenle kodu daha kısa tutar (gerçekten de belirgin bir avantaj değil).
Dezavantajları bulmak çok zordur. Biri, statik ve statik olmayan kısımların birbirine ait olması gerektiği, ancak eşlik eden nesnelerin Scala kavramıyla ayrılması gerektiğini iddia edebilir. Örneğin, bir sınıf diyagramına sahip olmak garip görünebilir, ancak daha sonra kodda iki şey oluşturmak zorunda kalır ve hangi özniteliğin nereye gittiğini incelemek zorunda kalırsınız.