2012-10-11 17 views
5

यह स्निपेट ठीक काम करता है अपने अंकों में एक नंबर को विभाजित करने में अपने अंकों में एक नंबर विभाजित करने के लिए है, लेकिन यह बहुत लंबा है:कैसे स्केला

val digits = (num toString).toList map(_.toString) map(_.toInt) 

जब toInt लागू किया मैं उन्हें toString Maped वास्तविक मूल्य प्राप्त करने के लिए और Char का प्रतिनिधित्व करने वाला मान toList द्वारा लौटाया गया नहीं है।

मैं स्कैला के लिए नया हूं, मुझे स्कैला की अनूठी शैली में उपयोग नहीं किया जाता है। क्या ऐसा करने का एक छोटा रास्ता है।

+1

आपको 'asDigit' का उपयोग लुइगी के रूप में करना चाहिए, लेकिन, बस इतना ही पता है कि आप अपना संस्करण 'num.toString.map (_। toString.toInt) '। – dhg

उत्तर

20
scala> 123.toString.map(_.asDigit) 
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3) 
5
(""+123).map(_-48) 

मैं सचमुच कम से कम लगता है, लेकिन कभी कभी स्पष्टता अधिक महत्वपूर्ण है। (48 के बजाय '0' के लिए कम से कम एक अतिरिक्त चरित्र!)

+3

भयानक 1, स्पष्टता 0. –

+1

छोटा: ("" +123) मानचित्र (_-48) – djjeck

+0

वैसे भी, मुझे नहीं लगता कि ओपी सचमुच सबसे छोटा चाहता था :) – djjeck

संबंधित मुद्दे