2013-07-20 2 views
3

Как я могу получить логическое значение из параметра VM? Мое решение не так просто, как яПолучить логическое значение из параметра VM в Scala

  1. должны проверить, если она равна нулю в противном случае я буду получать IllegalArgumentException

  2. должны преобразовать всю строку в верхнем или нижнем регистре и испытания, если это точно «ложный» или «истинный», иначе у меня будет то же самое исключение , брошенное на мое лицо.

т.е.

val property = System.getProperty("some.property.name") 
    property != null && property.toLowerCase == "true" 

Есть еще один выход из этого? Благодарю.

ответ

5

Scala имеет sys.props объект, который облегает Java свойств системы API, так что вы можете сделку с Option вместо null.

sys.props.get("property.name") exists (_ equalsIgnoreCase "true") 
2
scala> "true" equalsIgnoreCase "TruE" 
res0: Boolean = true 

scala> "true" equalsIgnoreCase System.getProperty("does.not.exist") 
res1: Boolean = false 
2

java.lang.Boolean#getBoolean(String) делает именно то, что вы ищете, если вы не против вызова в Java классы API:

scala> import java.lang.Boolean 
import java.lang.Boolean 

scala> Boolean.getBoolean("some.property.name") 
res0: Boolean = false 

scala> System.setProperty("foo", "true") 
res1: String = null 

scala> Boolean.getBoolean("foo") 
res2: Boolean = true 

scala> System.setProperty("bar", "false") 
res3: String = null 

scala> Boolean.getBoolean("bar") 
res4: Boolean = false 

scala> System.setProperty("baz", "lorem ipsum") 
res5: String = null 

scala> Boolean.getBoolean("baz") 
res6: Boolean = false 
+0

Существуют различия между булевым языком Scala и java.lang.Boolean. Я предпочитаю не импортировать их без необходимости. – thlim

 Смежные вопросы

  • Нет связанных вопросов^_^