2012-12-04 35 views
16

(String,(String,Double)) gibi iç içe geçmiş bir tuple yapısına sahibim ve onu (String,String,Double)'a dönüştürmek istiyorum. İç içe geçmiş bir çeşit tuple sahibim ve her birini el ile değiştirmek istemiyorum. Bunu yapmak için uygun bir yolu var mı?Yuvalanmış bir tuple nasıl düzleştirilir?

cevap

21

olduğunu Sen gibi Tupple dümdüz ihtiyacın var, bence.

6

Tupple'de düzleştirme yok. Bu, herhangi bir türde Tupple dümdüz edecek

implicit def flatten1[A, B, C](t: ((A, B), C)): (A, B, C) = (t._1._1, t._1._2, t._2) 
implicit def flatten2[A, B, C](t: (A, (B, C))): (A, B, C) = (t._1, t._2._1, t._2._2) 

: Yapıyı biliyorum Ama eğer böyle bir şey yapabilirsiniz. Ayrıca, örtülü anahtar kelimeyi tanımlamaya da ekleyebilirsiniz. Bu sadece üç element için çalışır.

dönüş türü yalnızca üç unsur vardır çünkü Tupple yere dümdüz edilemez iç içe Çoklu
(1, ("hello", 42.0)) => (1, "hello", 42.0) 
(("test", 3.7f), "hi") => ("test", 3.7f, "hi") 

:, this tam olarak neye shapeless kullanırsanız

((1, (2, 3)),4)  => (1, (2, 3), 4) 
İlgili konular