복붙노트

[SCALA] 스칼라지도 # get 및 일부의 반환 ()

SCALA

스칼라지도 # get 및 일부의 반환 ()

임 스칼라지도 #의 get 함수를 사용하여, 모든 정확한 쿼리는 몇 가지로 반환 [문자열]

다음은 몇 가지를 제거하는 쉬운 방법은 무엇입니까?

예:

def searchDefs{
    print("What Word would you like defined? ")
    val selection = readLine
    println(selection + ":\n\t" + definitionMap.get(selection))
  }

나는이 방법을 사용하면 다음 입력을 사용합니다 :

What Word would you like defined? Ontology

반환 값은 다음과 같습니다

Ontology:
    Some(A set of representational primitives with which to model a domain of knowledge or discourse.)

그 주변의 일부 ()을 제거하고 싶습니다.

모든 팁?

해결법

  1. ==============================

    1.옵션 유형을 처리하는 방법은 여러가지가 있습니다. 우선, 그러나 잠재적 널 참조 대신에 이것을 가지고 얼마나 잘 실현 않습니다! 자바가 어떻게 작동하는지에 사용되는 간단하기 때문에 그것을 없애하지 마십시오.

    옵션 유형을 처리하는 방법은 여러가지가 있습니다. 우선, 그러나 잠재적 널 참조 대신에 이것을 가지고 얼마나 잘 실현 않습니다! 자바가 어떻게 작동하는지에 사용되는 간단하기 때문에 그것을 없애하지 마십시오.

    다른 사람이 최근 언급 한 바와 같이 : 몇 주 동안 그것으로 스틱을하고 때마다 신음 할 것이다 당신은 옵션 유형을 제공하지 않는 언어로 다시 얻을 수 있습니다.

    이제 귀하의 질문에 관해서는, 간단하고 위험한 방법이 있습니다 :

    mymap.get(something).get
    

    얼마간 객체에 갔지 호출하면 객체의 내부를 검색합니다. 당신이 대신 없음이 없다면 (키가지도에 아닌 경우, 예를 들어) 그것은, 그러나, 당신에게 런타임 예외를 제공 않습니다.

    훨씬 깨끗한 방법은 다음과 같이 Option.foreach 또는 Option.map을 사용하는 것입니다 :

    scala> val map = Map(1 -> 2)
    map: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2)
    
    scala> map.get(1).foreach( i => println("Got: " + i))
    Got: 2
    
    scala> map.get(2).foreach( i => println("Got: " + i))
    
    scala> 
    

    당신이 볼 수 있듯이, 이것은 당신이 실제 값을 가지고있는 경우에만 경우이 문을 실행 할 수 있습니다. 옵션이 없음 대신 없으면 아무 일도 일어나지 않습니다.

    마지막으로,이 같은 옵션 유형에 패턴 매칭을 사용하는 것도 인기가있다 :

    scala> map.get(1) match {
         |  case Some(i) => println("Got something")
         |  case None => println("Got nothing")
         | }
    Got something
    
  2. ==============================

    2.개인적으로 기본 즉 .getOrElse ( "없음")와 같은 "없음"과 같은 .getOrElse (String)을 사용 무언가를 사용하여 같은 I.

    개인적으로 기본 즉 .getOrElse ( "없음")와 같은 "없음"과 같은 .getOrElse (String)을 사용 무언가를 사용하여 같은 I.

  3. from https://stackoverflow.com/questions/9389902/scala-mapget-and-the-return-of-some by cc-by-sa and MIT license