TV 등급 (TV 프로그램 용)을 내 코드에서 해당 등급의 사례 개체로 바꿀 필요가 있습니다. 따라서 나는 경우 매치과 같이 있습니다대소 문자가 일치하는 대소 문자가 알고리즘을 기반으로합니다. 어떤 알고리즘을 사용해야합니까?
def fromString(s: String): Option[TvRating] = s.toLowerCase match {
case "tvy" | "tv-y" | "tv y" | "y" => Some(tvY)
case "tvg" | "tv-g" | "tv g" | "g" => Some(tvG)
case "tvpg" | "tv-pg" | "tv pg" | "pg" => Some(tvG)
case "tv14" | "tv-14" | "tv 14" | "14" => Some(tv14)
case "tvma" | "tv-ma" | "tv ma" | "ma" => Some(tvMA)
case _ => Some(noTvRating)
}
당신은 내가 "tv.14"같은 것들을 고려하지 않습니다 여전히 복잡 각 등급의 모든 순열과 일치하도록 노력하고있어 볼 수 있듯이, 또는 "성숙한 관객".
soundX와 같은 알고리즘이 있지만 최후의 수단으로 사용할 수있는 이러한 등급과 같은 코드가 있습니다. 그러면 내 코드는 다음과 같이 보입니다.
def fromString(s: String): Option[TvRating] = s.toLowerCase match {
case "tvy" | "tv-y" | fancyAlgo(s, "tv-y") => Some(tvY)
case "tvg" | "tv-g" | fancyAlgo(s, "tv-g") => Some(tvG)
case "tvpg" | "tv-pg" | fancyAlgo(s, "tv-pg") => Some(tvG)
case "tv14" | "tv-14" | fancyAlgo(s, "tv-14") => Some(tv14)
case "tvma" | "tv-ma" | fancyAlgo(s, "tv-ma") => Some(tvMA)
case _ => Some(noTvRating)
}
또는 이러한 일치를보다 강력하게 만들 수있는 다른 제안. tv-g는 "개"또는 "말"과 같은 단어가 아니기 때문에 오디오 나 비슷한 소리의 단어를 기반으로 할 수 없습니다.
이것은 등급의 한 예입니다. 다른 성냥도 있습니다. 별표 평점 (썩은 토마토의 영화 등급 등)에 대한 또 다른 예는 다음과 같습니다
def fromString(s: String): Option[StarRating] = s.toLowerCase match {
case "1" | "one star" | "one stars" => Some(oneStar)
case "1.5" | "1.5 stars" | "one and a half stars" => Some(oneAndHalfStar)
case "2" | "2 stars" | "two stars" => Some(twoStars)
case "2.5" | "2.5 stars" | "two and a half stars" => Some(twoAndHalfStars)
case "3" | "3 stars" | "three stars" => Some(threeStars)
case "3.5" | "3.5 stars" | "three and a half stars" => Some(threeAndHalfStars)
case "4" | "4 stars" | "four stars" => Some(fourStars)
case _ => Some(noStars)
}
건배!
내가 찾는 항목과 일치하는 퍼지 문자열은 무엇입니까? – dlite922
당신이 의미하는 바를 봅니다. 그러나 나는 (일반적으로) 거의 불가능한 것을 요구하고 있습니다. "pg"를 의미하는 것이나 "pg"를 의미하는 것에 대한 규칙을 언급하지 않고서는 무엇이든 일치하는 것으로 생각합니다. 퍼지 스트링 매치가 아니기 때문에 일치하는 것이 무엇인지, "tv-14"(예를 들어, "14"가 일치해야합니까?)라고 말할 수있는 것에 대해 좀 더 자세히 설명 할 수 있다면 뭔가 할 수 있습니다. be done –
'Option []'타입의 전체적인 점은 _ None이 될 것이다. 귀하의 사례에 '없음'상태가없는 이유는 무엇입니까? – jwvh