setproduct 함수
setproduct 함수
setproduct 함수는 주어진 모든 집합의 요소들에서 가능한 모든 조합을 곱집합을 계산해서 찾아요.
출처: 문서
본문
setproduct 함수는 주어진 모든 집합의 요소들에서 가능한 모든 조합을 곱집합을 계산해서 찾아요.
setproduct(sets...)
이 함수는 여러 집합의 구성원들의 모든 조합의 완전한 집합, 예를 들어 애플리케이션별·환경별 리소스 같은 것을 찾을 때 특히 유용해요.
> setproduct(["development", "staging", "production"], ["app1", "app2"])
[
[
"development",
"app1",
],
[
"development",
"app2",
],
[
"staging",
"app1",
],
[
"staging",
"app2",
],
[
"production",
"app1",
],
[
"production",
"app2",
],
]
이 함수에는 최소 두 개의 인자를 전달해야 해요. 주로 집합을 위해 정의되지만 리스트에서도 동작해요. 주어진 인자가 모두 리스트면 결과도 리스트이며 주어진 리스트들의 순서를 보존해요. 그 외에는 결과가 집합이에요. 어느 경우든 결과의 요소 타입은 각 주어진 인자에 해당하는 값들의 리스트예요.
Examples
이 함수의 흔한 사용 예시는 위에서 다뤘어요. 손으로 직접 작성할 때는 덜 흔하지만 재사용 가능한 폴더 상황에서 생길 수 있는 몇 가지 경우가 더 있어요.
인자 중 하나라도 비어 있으면, 어떤 수에 0을 곱하면 0이 되는 것처럼 결과도 항상 비어요:
> setproduct(["development", "staging", "production"], [])
[]
마찬가지로 모든 인자가 요소를 하나만 가지면 결과도 요소가 하나뿐이며, 그것은 각 인자의 첫 번째 요소예요:
> setproduct(["a"], ["b"])
[
[
"a",
"b",
],
]
각 인자는 모든 요소가 일관된 타입이어야 해요. 그렇지 않으면 Nomad가 가장 일반적인 타입으로 변환을 시도하고, 그런 변환이 불가능하면 오류를 만들 거예요. 예를 들어 문자열과 숫자를 섞으면 숫자가 문자열로 변환되어 결과 요소가 모두 일관된 타입을 갖게 돼요:
> setproduct(["staging", "production"], ["a", 2])
[
[
"staging",
"a",
],
[
"staging",
"2",
],
[
"production",
"a",
],
[
"production",
"2",
],
]
더 알아보기 (Learn more)
contains는 주어진 리스트나 집합이 특정 요소 값을 포함하는지 검사해요.flatten은 두 객체 타입 간의 관계가 명시적으로 정의된 상황에서 계층적 데이터를 단일 리스트로 평탄화할 때 유용해요.setintersection은 여러 집합의 교집합 을 계산해요.setunion은 여러 집합의 합집합 을 계산해요.