2012-04-03 7 views
109

में पर्यावरण चर को कैसे पढ़ा जाए, जावा में, पर्यावरण चर पढ़ने को System.getenv() के साथ किया जाता है।स्कैला

क्या स्कैला में ऐसा करने का कोई तरीका है?

उत्तर

171

स्काला 2.9 जब से तुम एक ही प्रभाव के लिए sys.env उपयोग कर सकते हैं:

scala> sys.env("HOME") 
res0: String = /home/paradigmatic 

मुझे लगता है कि जावा के बजाय स्काला एपीआई का उपयोग करने अच्छा है। जावा एपीआई पर निर्भरताओं को कम करने के लिए जेवीएम (.NET, जावास्क्रिप्ट, मूल, इत्यादि) की तुलना में अन्य प्लेटफ़ॉर्म पर स्कैला को संकलित करने के लिए वर्तमान में कई प्रोजेक्ट हैं, जो आपके कोड को अधिक पोर्टेबल बना देगा।

+70

यह संभवतः 'sys.env.get ("VARIABLE") का उपयोग करने के लिए बेहतर अभ्यास है, जो उस चर को गायब होने पर त्रुटि को फेंकने के बजाय आपको' विकल्प [स्ट्रिंग] 'देगा। –

+2

@ क्रिस्टियनव्रेबी मैं इसे ज्यादातर मामलों में भी पसंद करूंगा। लेकिन 'sys.env' सिर्फ एक 'मानचित्र' है। आप जो भी विधि आपके लिए उपयुक्त हो सकते हैं। – paradigmatic

23

एक ही रास्ता:

scala> System.getenv("HOME") 
res0: java.lang.String = /Users/dhg 
+2

यह काम करता है का उपयोग कर सकते हैं, लेकिन यह वास्तव में सबसे अच्छा विकल्प – iwein

+4

नोट नहीं है: अन्य उत्तर की अनदेखी न करें - उन्हें जवाहरात हैं ! –

+2

जावा के बजाय स्कैला एपीआई का उपयोग करके किया जाना चाहिए। –

97
वहाँ

एक वस्तु है:

scala.util.Properties 

इस तरीके कि पर्यावरण की जानकारी प्राप्त करने के लिए इस्तेमाल किया जा सकता का संग्रह है, सहित

scala.util.Properties.envOrElse("HOME", "/myhome") 
+0

मैं गुण भी पसंद करूंगा। यह विकल्प पुनर्प्राप्त करने की अनुमति देता है, और आमतौर पर प्रयुक्त गुणों के लिए नाम हैं। – ppopoff

3

तो Lightbend के विन्यास पुस्तकालय Play2 में डिफ़ॉल्ट रूप से प्रयोग किया जाता है (और अक्का) तो आप उपयोग कर सकते हैं

foo = "default value" foo = ${?VAR_NAME}

सिंटैक्स foo ओवरराइड करने के लिए अगर कोई पर्यावरण चर VAR_NAME मौजूद है। https://github.com/typesafehub/config#optional-system-or-env-variable-overrides

0

में अधिक जानकारी सभी वातावरण चर मुद्रित करने के लिए, आप

System.getenv.forEach((name, value) => println(s"$name: $value"))