난 부울 및 문자열을 사용한 혼합지도 만들 때 :가장 좋은 방법
scala> val map = Map('boolean -> true, 'string -> "string")
map: scala.collection.immutable.Map[Symbol,Any] = Map('boolean -> true, 'string -> string)
을 그리고 내가 얻을 직접 부울 부분에 액세스하려고 : 번째 수행이지도를 만들 수있는 방법이 있나요
scala> implicit def anyAsBoolean(x: Any) = x.asInstanceOf[Boolean]
warning: there were 1 feature warning(s); re-run with -feature for details
anyAsBoolean: (x: Any)Boolean
scala> if (map('boolean)) true else false
res3: Boolean = true
:
scala> if (map('boolean)) true else false
<console>:9: error: type mismatch;
found : Any
required: Boolean
if (map('boolean)) true else false
^
그래서 나는 그 일을하기 위해 암시를 정의해야 클라이언트 코드에 암시 적 부분을 추가 할 필요없이 암시 적으로 변환합니까?
정말 이런 식으로해서는 안됩니다. 언젠가 당신이''boolean'에 부울을 넣는 것을 잊으면 어떻게 될까요? 런타임 오류가 발생합니다. 데이터가 실제로 무엇인지 유형을 반영하도록하십시오! 문자열이나 파일 등에서 데이터를 읽어야 할 경우 match 문 사용 방법을 확인하고 발생하는 모든 오류를 처리하십시오. –
심볼 이름이 그 예입니다. 요점은 내 맵에''symbol -> true'를 놓고 다른 타입을 가리키는 다른 심볼들이 있다면,''map ('symbol)'을 타입 캐스팅없이 boolean으로 사용할 수 있기를 원합니다. 클라이언트 코드. – DavidG