Version.Requirement 구조체
Version.Requirement 구조체
버전 요구사항을 다루다 보면, 그 요구사항을 하나의 값으로 표현하고 싶어질 때가 있어요. Version.Requirement는 바로 그런 버전 요구사항 정보를 담는 구조체(struct)예요. 버전 요구사항을 파싱하면 이 구조체로 표현되고, Version.match?/2 같은 함수에서 사용돼요.
본문
Version.Requirement는 버전 요구사항 정보를 담는 구조체예요.
구조체의 필드는 비공개(private) 로 되어 있어서, 직접 접근하면 안 돼요. 대신 Version 모듈이 제공하는 함수를 통해 이 값을 생성하고 비교하는 방식으로 사용해요.
버전 요구사항(requirement)이 무엇인지에 대한 자세한 내용은 Version 모듈 문서의 "Requirements" 섹션을 참고하세요. 요구사항은 ~> 2.0나 >= 1.0.0 and < 2.0.0처럼 연산자와 버전의 조합으로 표현되는, "어떤 버전들을 허용할지"를 나타내는 조건이에요.
이 구조체가 정의하는 타입은 다음과 같아요.
@opaque t()
@opaque는 이 타입의 내부 구조가 비공개임을 나타내요. 즉 이 타입의 값은 Version 모듈이 제공하는 함수로만 다룰 수 있고, 내부 필드에 직접 접근하거나 임의로 구성할 수는 없어요. 이렇게 캡슐화해 두면 버전 요구사항을 다루는 방식이 한곳에 모여서, 문법이 바뀌어도 사용자 코드에는 영향을 주지 않아요.
실사용에서는 Version.Requirement 값을 직접 만들 일은 거의 없어요. 대개 Version.parse_requirement/1 같은 함수가 요구사항 문자열을 파싱해 이 구조체를 만들어 주고, 그 결과를 Version.match?/2에 넘겨서 특정 버전이 그 요구사항을 충족하는지 판단하는 식으로 쓰여요.