심볼 색인
공개 표면의 심볼을 이름으로 찾는 자리다. 각 행의 링크가 그 심볼을 자세히 설명하는 페이지를 가리킨다 — 같은 심볼이 두 페이지에 나오면(예: Slot의 센티널) 둘 다 적었다.
읽는 순서가 필요하면 색인이 아니라 트랙을 따라갈 것: 시작하기 → 실전 레시피 → 여기.
표기 규약: 모듈 인스턴스는 q, 백엔드 표면은 q.D를 D로 받아 쓴다. q.X는 모듈 표면의 값, x:Method()는 그 값의 메소드, x.Field는 필드다. <<T>>는 명시 타입 인자다.
모듈과 설치
섹션 제목: “모듈과 설치”| 심볼 | 페이지 |
|---|---|
q.New() |
core/01 — Quad 모듈 |
q:RunInit(initFn) |
core/01 |
q:AddPlugin(pluginFn) |
core/01 |
q:UseProvider(providerFn) |
core/01 · roblox/01 — 설치 |
q.Version |
core/01 |
q.debug |
core/01 |
q.errorNamespace |
core/01 · extend/01 |
q.Relate() |
core/01 |
QuadRoblox |
roblox/01 — 설치 |
RobloxExtension |
roblox/01 |
반응형 코어
섹션 제목: “반응형 코어”| 심볼 | 페이지 |
|---|---|
q.Source(value) |
core/02 — Source |
source:Set(v) |
core/02 |
source:Emit() |
core/02 |
source.Revision |
core/02 |
state:Get() |
core/03 — State |
state:Compute(fn, ...deps) |
core/03 |
state:With(...) |
core/03 |
state:Apply(factory) |
core/03 · core/06 |
state:Observer(fn) |
core/05 — Observer·Effect · core/03 |
state:Gate(setup) |
core/03 |
q.Store(defaults) |
core/04 — Store |
store.key(선언된 필드) |
core/04 |
store:Of<<U>>(name) |
core/04 |
store:Names() |
core/04 |
구독 핸들
섹션 제목: “구독 핸들”| 심볼 | 페이지 |
|---|---|
q.Effect(fn, ...deps) |
core/05 — Observer·Effect |
observer.Subscribed |
core/05 |
observer:Subscribe() |
core/05 |
observer:WeakSubscribe() |
core/05 |
observer:Unsubscribe() |
core/05 |
observer:WeakUnsubscribe() |
core/05 |
effect:Rerun() |
core/05 |
effect:Subscribe() |
core/05 |
effect:WeakSubscribe() |
core/05 |
effect:Unsubscribe() |
core/05 |
effect:WeakUnsubscribe() |
core/05 |
전파 게이트
섹션 제목: “전파 게이트”| 심볼 | 페이지 |
|---|---|
q.Blocker() |
core/06 — Blocker·Gate |
blocker.IsBlocked |
core/06 |
blocker:IsOn() |
core/06 |
blocker:On() |
core/06 |
blocker:Off() |
core/06 |
blocker:OffWithoutEmit() |
core/06 |
blocker:Policy(emit) |
core/06 |
Slot
섹션 제목: “Slot”| 심볼 | 페이지 |
|---|---|
q.Slot<<T>>(initial?) |
core/07 — Slot |
slot.Length |
core/07 |
slot.Offset |
core/07 |
slot:Add(element, index?) |
core/07 |
slot:Remove(index) |
core/07 |
slot:Replace(index, newElement) |
core/07 |
slot:Extract(index, newElement?) |
core/07 |
slot:ExtractAll() |
core/07 |
slot:Splice(index, removeCount, ...) |
core/07 |
slot:Clear() |
core/07 |
slot:Move(oldIndex, newIndex) |
core/07 |
slot:Swap(indexA, indexB) |
core/07 |
slot:Get(index) |
core/07 |
slot:IndexOf(element) |
core/07 |
slot:List(data, updateFn, keyFn?, opts?) |
core/07 |
slot:Single(state, updateFn?, opts?) |
core/07 |
Ref
섹션 제목: “Ref”| 심볼 | 페이지 |
|---|---|
q.Ref<<T>>(default) |
core/08 — Ref |
q.PreRef<<T>>(default) |
core/08 |
q.PostRef<<T>>(default) |
core/08 |
ref.Value |
core/08 |
ref.Revision |
core/08 |
ref.Callbacks |
core/08 |
ref.WeakCallbacks |
core/08 |
ref:Set(value) |
core/08 |
ref:Callback(fn) |
core/08 |
ref:WeakCallback(fn) |
core/08 |
ref:Uncallback(fn) |
core/08 |
ref:Wait(thread?) |
core/08 |
ref:Unwrap() |
core/08 |
Modifier
섹션 제목: “Modifier”| 심볼 | 페이지 |
|---|---|
q.Modifier(...) |
core/09 — Modifier |
mod:<Field>(value) |
core/09 · roblox/03 |
mod:Peek<<T>>(key) |
core/09 |
mod:Apply(factory) |
core/09 |
mod:Overridden(...) |
core/09 |
mod:As(name) |
core/09 |
mod:As<Class>() |
core/09 · roblox/03 |
q.Modifier.Overridden(...) |
core/09 |
q.Modifier.TypedFactory<<T>>(name) |
core/09 |
q.Modifier.DefineSubtype(parent, subtype) |
core/09 |
D.Modifier.<Class>(...) |
roblox/03 — D.Modifier |
mod:As() / mod:As<<T>>() |
roblox/03 · core/09 |
Into<Class> / <Class>Modifier |
roblox/03 |
Tag / Attr
섹션 제목: “Tag / Attr”| 심볼 | 페이지 |
|---|---|
q.Tag(...names) |
core/10 — Tag·Attr |
tag:Added(names) |
core/10 |
tag:Removed(names) |
core/10 |
tag:Contains(...names) |
core/10 |
tag:Names() |
core/10 |
tag:Apply(factory) |
core/10 |
q.Tag.Merged(...tags) |
core/10 |
q.Attr(...) |
core/10 |
attr:NameMap() |
core/10 |
q.Attr.Merged(...) |
core/10 |
q.Attr.Overridden(...) |
core/10 |
q.AttrKey(name) |
core/10 |
q.StringAttr(name, value) |
core/10 |
q.NumberAttr(name, value) |
core/10 |
q.BooleanAttr(name, value) |
core/10 |
센티널과 생명주기
섹션 제목: “센티널과 생명주기”| 심볼 | 페이지 |
|---|---|
q.None |
core/11 — 생명주기와 센티널 |
q.Detach |
core/11 · core/07 |
q.KeyGone |
core/11 · core/07 |
q.Void |
core/11 |
q.dispose(value) |
core/11 · core/07 |
q.MapperRoot |
core/11 · roblox/04 |
q.newMapperClass(className) |
core/11 |
q.bindLifetime(inst, value) |
core/11 · extend/01 |
q.unbindLifetime(value) |
core/11 · extend/01 |
q.canBound(value) |
core/11 · extend/01 |
q.canExecute(value) |
core/11 · extend/01 |
브랜드 술어
섹션 제목: “브랜드 술어”q.isEpoch · q.isSource · q.isState · q.isStore · q.isObserver · q.isEffect · q.isBlocker · q.isContext · q.isProvider · q.isModifier · q.isRef · q.isPreRef · q.isPostRef · q.isMapperDescriptor · q.isSlot · q.isTag · q.isAttr · q.isAttrKey — 전부 core/12 — 브랜드 술어의 한 표에 있다.
| 심볼 | 페이지 |
|---|---|
q.isInst(value) |
core/12 · extend/01 |
q.isTween(x) |
core/12 · roblox/06 |
| 심볼 | 페이지 |
|---|---|
q.Context() |
sugar/01 — Context |
q.Context.Provider(name?) |
sugar/01 |
ctx:Set(provider, value) |
sugar/01 |
ctx:Get(provider) |
sugar/01 |
ctx:Peek(provider) |
sugar/01 |
provider.Name |
sugar/01 |
q.Operator.Not |
sugar/02 — Operator |
q.Operator.Sum(...) |
sugar/02 |
q.Operator.Product(...) |
sugar/02 |
q.Operator.Min(...) |
sugar/02 |
q.Operator.Max(...) |
sugar/02 |
q.Operator.Clamp(lo, hi) |
sugar/02 |
q.Operator.Band(...) |
sugar/02 |
q.Operator.Bor(...) |
sugar/02 |
q.Operator.Bxor(...) |
sugar/02 |
q.Operator.Bnot |
sugar/02 |
q.Operator.Shl(n) |
sugar/02 |
q.Operator.Shr(n) |
sugar/02 |
q.Operator.Alternative(default) |
sugar/02 |
q.Operator.Index<<V>>(key) |
sugar/02 |
q.Debounce{...} |
sugar/03 — Debounce·Throttle |
q.Throttle{...} |
sugar/03 |
handle:Flush() / handle:Cancel() |
sugar/03 |
factory:Flush() / factory:Cancel()(TimedGate 브로드캐스트) |
sugar/03 |
q.OnCreated<<I>>(fn) |
sugar/04 — 생명주기 훅 |
q.OnRendered<<I>>(fn) |
sugar/04 |
q.OnDestroyed(fn) |
sugar/04 |
q.Fallback(base, onError) |
sugar/05 — Fallback·Traceback |
q.Traceback(base, onError) |
sugar/05 |
Roblox 백엔드
섹션 제목: “Roblox 백엔드”| 심볼 | 페이지 |
|---|---|
q.D |
roblox/01 — 설치 · roblox/02 |
D.<Class>(props) |
roblox/02 — D |
D.New<<T>>(className)(props) |
roblox/02 |
숏핸드 키 UICorner / UIPadding / UIPaddingOffset / UIScale |
roblox/02 |
q.Claim(inst, descriptor) |
roblox/04 — Claim·D.Mapper |
D.Mapper.<Class>(key)(props) |
roblox/04 |
D.Mapper.Root |
roblox/04 |
q.OnChange(name, fn) |
roblox/05 — OnChange |
q.Tween(opts) |
roblox/06 — Tween·Animate |
tween:Mapped(fn) |
roblox/06 |
q.Animate(info) |
roblox/06 |
확장 계약
섹션 제목: “확장 계약”| 심볼 | 페이지 |
|---|---|
주입 슬롯 전체(native*, onDestroying, nativeClaim, nativeFindChild, addTag, removeTag, setAttr, setTimeout, clearTimeout) |
extend/01 — 백엔드 프로바이더 규약 |
Handler 레코드(isHandlable/priority/process/name/keyType) |
extend/02 — 디스패치 핸들러 계약 |
retractor (nextValue, retracting) |
extend/02 |
q.Dispatch.HANDLER_PRIORITY_HIGH / _NORMAL / _LOW / _FALLBACK |
extend/02 |
q.Dispatch.addHandler(handler) |
extend/02 |
q.Dispatch.listHandlers() |
extend/02 |
q.Dispatch.getHandler(inst, key, value) |
extend/02 |
q.Dispatch.process(inst, key, value, index) |
extend/02 |
q.Dispatch.retractFrom(inst, key, index) |
extend/02 |
q.Dispatch.drive(inst, flattened) |
extend/02 |
q.Dispatch.setLength(ownerKey, i, len, anchor?, element?) |
extend/02 |
q.Dispatch.setOffsetSource(ownerKey, i, source) |
extend/02 |
q.Dispatch.setEmpty(ownerKey, i, anchor?) |
extend/02 |
q.Dispatch.getOffsetAt(ownerKey, at) |
extend/02 |
q.Dispatch.getBlocker(ownerKey) |
extend/02 |
q.Dispatch.getBookkeeping(ownerKey) |
extend/02 |
타입 계약의 정본은 quad-types/src/init.luau 한 파일이다 — State<T>/Source<T>/Slot<T>/Ref<T>/Store<T>/Handler/Dispatch 같은 값 타입, 입력 자리용 마커(StateMarker<T>/SlotMarker<T>), 출력 자리의 FieldOut<T>, 센티널 타입(None/Detach/KeyGone/MapperRoot)이 전부 거기 선언돼 있다.
예외는 백엔드가 소유한 타입이다. Tween<T>/TweenData<T>/TweenOptions<T>/TweenOverride/TweenConstructor/AnimateInfo/AnimateFn/NewChild/OnChangeDescriptor와 백엔드 확장 모양 RobloxExtension은 quad-roblox/src/types.luau(와 quad-roblox/src/init.luau)가 정본이고, 클래스별 생성 타입(FrameParam<E>/FrameModifier/IntoFrame/PropTypes/PropTypesRead 등)은 생성 모듈 quad-roblox/src/D가 정본이다 — 엔진 지식이 들어간 타입은 코어가 아니라 그 백엔드에 산다. 각 타입이 왜 그 모양인지는 Quadnomicon 4권 — 공변 마커가 다룬다.