스칼라에서 환경 변수를 읽는 방법


157

Java에서는 환경 변수 읽기가로 수행됩니다 System.getenv().

스칼라에서 이것을 할 수있는 방법이 있습니까?

답변:


232

스칼라 2.9부터는 sys.env같은 효과를 사용할 수 있습니다 .

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

Java 대신 Scala API를 사용하는 것이 좋습니다. 현재 스칼라를 JVM (.NET, javascript, native 등) 이외의 다른 플랫폼으로 컴파일하는 프로젝트가 여러 개 있습니다. Java API에 대한 종속성을 줄이면 코드를 더 이식 가능하게 만들 수 있습니다.


96
해당 변수가 없으면 오류를 발생 sys.env.get("VARIABLE")시키는 Option[String]대신 사용 하는 것이 좋습니다.
크리스티안 브라 비

4
@CristianVrabie 대부분의 경우에도 선호합니다. 그러나 sys.env단지 Map. 어떤 방법을 사용 하든지 상관 없습니다.
패러다임

3
sys.env.getOrElse("VARIABLE", "default value")환경 변수가 정의되지 않은 경우에도 도움이되었습니다.
Josh Peak

131

객체가 있습니다 :

scala.util.Properties

여기에는 다음을 포함하여 환경 정보를 얻는 데 사용할 수있는 메소드 모음이 있습니다.

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

3
나는 또한 속성을 선호합니다. 선택 사항을 검색 할 수 있으며 일반적으로 사용되는 특성의 이름이 있습니다.
ppopoff

25

같은 길:

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

이제 Scala를 매일 사용하므로 허용 된 답변을 @paradigmatic의 답변으로 옮겨야합니다. Scala API를 사용하며 주석에서 제안한대로 사용하면 옵션을 반환 할 수 있습니다.
summerbulb

11

지도 를 getOrElse통해 기본값을 직접 사용 sys.env( val myenv: Map[String, String] = sys.env) :

sys.env.getOrElse(envVariable, defaultValue)

의 컨텐츠를 얻 envVariable거나 존재하지 않는 경우 의 컨텐츠를 얻 습니다 defaultValue.



0

모든 환경 변수 를 인쇄하려면

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

1
error: missing parameter type그냥 복사하여 붙여 넣으면 args에.
thundergolfer

@ thundergolfer : 나는 현재 내 컴퓨터에 Scala가 설치되어 있지 않습니다. 무엇이 빠졌는지 알아 냈습니까?
Matthias Braun

매개 변수를로 변경 (name: String, value: String)하면가 나타납니다 error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String].
Roland Weber

1
여기에 작품이 뭔가하지만 수입이 필요합니다 alvinalexander.com/scala/...을
롤랜드 웨버
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.