두 가지 약속은 언제 컴퓨터 과학에서 동일하다고 간주됩니까? 유형이 동일하거나 내용이 다를 때?CS : 함수형 프로그래밍에서의 약속의 동일성
struct {
case Value(@autoclosure() -> ValueType)
case Error(@autoclosure() -> ErrorType)
case None
}
과 동등 기능 :
func == <ValueType, ErrorType> (left: Promise<ValueType, ErrorType>, right: Promise<ValueType, ErrorType>) -> Bool
{
switch (left, right)
{
case (.Value, .Value): fallthrough
case (.Error,.Error): fallthrough
case (.Nil, .Nil):
return true
default:
return false
}
}
나이 :
func == <ValueType, ErrorType> (left: Promise<ValueType, ErrorType>, right: Promise<ValueType, ErrorType>) -> Bool
{
switch (left, right)
{
case (.Value, .Value):
return left.value() == right.value()
case (.Error,.Error):
return left.error() == right.error()
case (.Nil, .Nil):
return true
default:
return false
}
}
하나
는보다 구체적인 예를 들어, 나는 신속이 같은 구조체가 올바른 방법입니까 아니면 응용 프로그램에 의존합니까?
나는 약속의 실패 경로가 신속하게 끝이 났음을 깨닫게되었다. 대신에 항상 .Value를 사용하고 열거 형을 통해 더 나은 반환 값을 사용한다. –
하지만 가능한 모든 결과 유형에 오류 또는 실패 상태를 추가해야합니까? generics를 사용하면 이것을 결과에 숨기거나 열거 형을 약속하고 사용 여부에 관계없이 선택할 수 있습니다. – user965972
그래,하지만 반환 값은 다르기 때문에 스위치/케이스에 명시 적 열거가 필요하기 때문에 "성공/실패"를 반환하는 대신 "성공, CouldNotMakeRequest, FileNotFake, ServerError"등을 반환 할 수 있습니다.실패한 것, 실패한 것, 그리고 문자열에서 숨겨진 것을 숨길뿐만 아니라 _whhy_와 _why_를 알게됩니다. –