@select — 벡터 요소를 조건에 따라 골라내는 내장 함수

@select — 벡터 요소를 조건에 따라 골라내는 내장 함수

여러 값을 담은 두 벡터가 있을 때, 요소 하나하나를 어느 벡터에서 가져올지 조건에 따라 정하고 싶을 때가 있어요. 그럴 때 쓰는 게 @select예요. 같은 길이의 불리언 벡터 pred를 스위치 삼아, 각 위치에서 ab 중 하나의 값을 골라 새 벡터를 만들어 냅니다. 마치 요소별로 조건 연산을 적용하는 것과 같죠.

출처: Zig Documentation

본문

시그니처는 이렇게 생겼어요:

@select(comptime T: type, pred: @Vector(len, bool), a: @Vector(len, T), b: @Vector(len, T)) @Vector(len, T)

T는 요소 타입이고, len은 벡터의 길이예요. pred, a, b 모두 길이가 len인 벡터이어야 하고, 반환 타입도 마찬가지로 같은 길이의 @Vector(len, T)가 돼요.

동작 원리는 요소별(element-wise)로 정해져요. pred[i]true라면 결과의 i번째 요소는 a[i]가 되고, 그 외의 경우에는 b[i]가 됩니다. 즉 pred의 각 요소가 정확히 그 위치에서 어느 벡터의 값을 가져올지 정하는 역할을 해요.

더 알아보기 (Learn more)

  • Vectors — 벡터 타입 전반에 대한 설명