headOption
인 경우 스칼라에 tailOption
이없는 이유는 무엇입니까?왜 Scala에서는 tailOption이 필요하지 않습니까?
이것은 old 질문입니다. Google에서 답변을 찾을 수 없습니다.
headOption
인 경우 스칼라에 tailOption
이없는 이유는 무엇입니까?왜 Scala에서는 tailOption이 필요하지 않습니까?
이것은 old 질문입니다. Google에서 답변을 찾을 수 없습니다.
tailOption
은 필요하지 않습니다. tail
과 같은 기능을 원한다면. 빈 콜렉션에서 빈 콜렉션을 사용하면 drop(1)
을 사용할 수 있습니다. 나는이 때 쌍의 목록 작성 우아하게 하늘의 콜렉션을 처리 할 때 내가 자주 사용 : 빈 수집 및 비어 있지 않은 하나에 Some(tail)
에 None
을 원하는 경우에
s zip s.drop(1)
을, 당신은 사용할 수 있습니다
s.headOption.map(_ => s.tail)
또는 (당신이 예외를 신경 쓰지 않는 경우는 조금 느려질 수있다, 던져 및 캡처 할) :
Try {s.tail}.toOption
내가 거의 구약에 대한 합리적인 사용 사례를 상상할 수 없다 그래도 그녀의 선택권.
그래서'def tailOption = drop (1) andThen headOption' 또는 stg like that – jhegedus
필자는 이전에이 프로그램을 사용하지 않았지만 tailOption이 표준 라이브러리의 일부가 아닌 이유는 흥미 롭습니다. 나는 그것이 왜 존재하지 않는지 알지 못하지만, 빈리스트의 꼬리에 의해 던져지는 에러를 잡아 냄으로써 확실히 기능을 확장 할 수있다.
def getOption[A](a: => A) = {
try{ Some(a) }
catch { case e: Exception => None }
}
getOption(List(1,2,3).tail) // Some(3)
getOption(Nil.tail) // None
옵션의 꼬리는 무엇입니까? – Lee