2012-03-19 25 views
13

मुझे उम्मीद थी कि हो सकता है कुछ भी नहीं होता के रूप में सीधे आगेका प्रयोग रंग

Console.out.println("Test " + Console.RED + " RED " + Console.RESET) 

के रूप में लेकिन, बजाय मैं नियंत्रण वर्ण (उदा "\033[31m") देखें। मैंने एसबीटी (sbt run) और सामान्य आईडीईए रन कॉन्फ़िगरेशन चलाने के लिए दोनों की कोशिश की ...

+1

मुझे नहीं पता था कि स्कैला के साथ यह संभव था, +1 के लिए संस्कृति। –

+0

कंसोल.RED और इस तरह के विकल्प के लिए http://stackoverflow.com/questions/27229533/how-to-colorize-the-standard-output-in-scala-with-ansi-codes देखें। –

उत्तर

10

यह काम करता है यदि आपका कंसोल रंग का समर्थन करता है। मैंने बस पट्टी के माध्यम से लिनक्स सिस्टम पर कोशिश की और अपेक्षित परिणाम प्राप्त किया।

संपादित करें: यदि आप विंडोज़ के माध्यम से ऐसा करना चाहते हैं तो आप अपने मानक कमांड प्रॉम्प्ट में रंग प्रदान करने के लिए Ansicon का उपयोग कर सकते हैं।

+1

आह ठीक है, यह IntelliJ IDEA कंसोल की समस्या प्रतीत होता है। जबकि आईडीईए के लिए एसबीटी प्लगइन एसबीटी के लिए रंग प्रदान करता है, ऐसा लगता है कि scala.Console के एएनएसआई नियंत्रण कोड समर्थित नहीं हैं। मैंने सामान्य बैश से दौड़ने की कोशिश की और यह काम करता है। –

6

यूप, उपर्युक्त काम ठीक है। इसके अलावा, मैं पाया है कि यह उन तक इस पुस्तकालय में की तरह, स्ट्रिंग पर तरीकों ".red" के रूप में रैप करने के लिए बहुत साफ है https://github.com/ktoso/scala-rainbow

रूबी रत्न बाहर वहाँ है कि ऐसा करने के बहुत सारे हैं, लेकिन अभी तक स्काला के लिए इतना नहीं। .. :-)

1

2.11+ आप इस लाइब्रेरी का उपयोग कर सकते हैं स्केला उपयोग कर रहे हैं: https://github.com/backuity/ansi-interpolator

यह संकलन समय पर अपने तार को बदलने के लिए कोई मैक्रो का उपयोग करता है, और समर्थन करता है नेस्टिंग:

ansi"Text containing ansi tags such as %bold{bold text} or %underline{can be %yellow{nested}}" 

// you can also use string interpolation: 
val someMsg = "hey" 
ansi"My msg %bold{in bold: $someMsg}" 
संबंधित मुद्दे