. Sözcüksel olarak aynı olan her sembol, aynı bellek alanına karşılık gelir. Scala'nın bakış açılarından özel bir şey yok. Ancak, Dispatch-Json, JSON mülk çıkarıcıları yapan sembolleri dışarı çıkarır. Taklit etmekle sorumlu olan kodu görmek için SymOp class ve JsonExtractor.scala kodunun kalanını kontrol edin.
en bakıyorsun sorunu çözer bazı kodlar yazalım ve sonra neler olduğunu analiz:
trait ExtUserProps extends UserProps with Js {
val friends_count = 'friends_count ! num
}
object ExtUser extends ExtUserProps with Js
val good_stuff = for {
item <- http(Status("username").timeline)
msg = Status.text(item)
user = Status.user(item)
screen_name = ExtUser.screen_name(user)
friend_count = ExtUser.friends_count(user)
} yield (screen_name, msg, friend_count)
biz Sevk-Heyecan modülünde UserProps özelliği eklenerek genişletilmiştir yapıyoruz ilk şey friends_count
ekstrüderi verin ve daha sonra bu çıkarıcıya erişmek için kullanabileceğimiz bir ExtUser
nesnesini tanımlayın. ExtUserProps, Js'yi de genişleten UserProps'ı genişletdiğinden, 'friends_count
sembolümüzü bir SymOp case sınıfına dönüştüren sym_add_operators
metodunu elde ederiz. Ardından, daha sonra Extractor num
ürününü ilettiğimiz SymOp üzerinde yöntemini çağırırız; bu, bir JSON nesnesinde "friends_count" özelliğini arayan bir Extractor oluşturan ve sonra döndürmeden önce bir sayı olarak ayrıştırılan bir Extractor oluşturur. Oldukça küçük bir kod için oraya gidiyor.
Programın bir sonraki kısmı, bir kullanıcı için Twitter zaman çizelgesini çağıran ve her bir durum öğesini temsil eden JsObjects'a ayrıştıran bir kavramadır. Durum mesajını çekmek için Status.text
çıkarıcıyı uygularız. Sonra kullanıcıyı çekmek için aynısını yaparız. Daha sonra ekran_adını ve friend_count'u JsObject kullanıcısından çıkarırız ve sonunda aradığımız tüm özelliklerle bir Tuple3 geri veririz. Daha sonra bir Listeyi [Tuple3 [String, String, BigDecimal]] ile bıraktık, daha sonra yazdırmak veya her şeyi yapmak için yineleyebilirsiniz.
Umarım bazı şeyleri temizler. Dispatch kütüphanesi çok etkileyici ancak Scala'yı öğrenmeyi başaramayan bir çok Scala hilesi kullandığı için kafanızı sarmak biraz zor olabilir. Ancak, testlere ve kaynak kodlara bakmanın yanı sıra, etrafa takılıp oynatmaya devam edin ve Scala'yı kullanarak güçlü DSL'lerin nasıl oluşturulacağını göreceksiniz.
Yanıt, kullandığınız kitaplık/API'daki * tamamen * * bağlıdır, ancak bunu belirlemediniz. –
Scala'nın gönderim HTTP kütüphanesini kullanıyorum. –