에러 코드 — Tag·Attr
This content is not available in your language yet.
각 절은 ### QuadNNNN — 메시지 원문(자리표시자는 {…}), 언제 나는가, 어떻게 고치는가. 번호로 찾으려면 색인.
Quad0001
섹션 제목: “Quad0001”AttrKey: name must be a non-empty string — quad-base/src/Attr/Key.luau
{ctx}: attribute name cannot be empty — quad-base/src/Attr/init.luau
{ctx}: plain-table keys must be non-empty strings — quad-base/src/Attr/init.luau
{fnName}: name must be a non-empty string — quad-base/src/Attr/init.luau
- 언제:
q.AttrKey(name)에 넘긴name이 문자열이 아니거나 빈 문자열일 때. - 언제:
q.Attr(...)에 넘긴Store가 선언한 이름(store:Names()) 중 빈 문자열이 있을 때.{ctx}는 부른 자리 이름(Attr)입니다.Store의 생성자와:Of는 빈 문자열 이름을Quad0193으로 먼저 막지만, 그 두 문 밖에서 직접 대입한 필드(store[""] = q.Source(2))는 막지 않으므로 그런Store를q.Attr에 넘기면 이 에러가 납니다. - 언제:
q.Attr(...)에 넘긴 평범한 테이블(메타테이블 없는)의 키 중 문자열이 아니거나 빈 문자열인 것이 있을 때. - 언제:
q.StringAttr/q.NumberAttr/q.BooleanAttr에 넘긴name이 문자열이 아니거나 빈 문자열일 때.{fnName}은 부른 패밀리 이름입니다. - 고치려면: 이름과 평범한 테이블의 키를 비어 있지 않은 문자열로 쓰세요.
Store의 필드는 직접 대입하지 말고 생성자나store:Of(name)으로 만드세요. - 참고:
q.AttrKey(name),q.Attr(...),q.StringAttr(name, value)
Quad0002
섹션 제목: “Quad0002”AttrKey: attribute "{k.Name}" is already bound by another owner — quad-base/src/Attr/Key.luau
- 언제: 한 인스턴스의 같은 속성 이름을 서로 다른 두 주인이 동시에 주장할 때 — 먼저 그 이름을 차지한 쪽이 아직 자리에서 물러나지 않은 채로 다른 쪽이 같은 이름에 값을 놓으려 할 때입니다. 공개
q.AttrKey(name)는 이름별로 캐시돼 그 키를 붙든 동안 같은 이름에 다른 키 객체가 나오지 않으므로, 실제로 흔한 경로는 그룹 쪽입니다: 같은 이름을 가진 그룹q.Attr(...)둘을 한 인스턴스에 놓거나({ q.Attr({ Hp = 5 }), q.Attr({ Hp = 9 }) }), 그룹q.Attr과[q.AttrKey("Hp")] = …를 함께 놓는 경우입니다. 그룹은 이름마다 자기 전용 키를 쓰기 때문에, 메시지가AttrKey를 말해도 사용자가AttrKey를 직접 쓰지 않았을 수 있습니다. 또 하나의 원인은 엔진이 같은 이름의 쓰기를 한 번 거부한 뒤 같은 이름을 다시 놓는 경우입니다(아래 관측). - 고치려면: 한 인스턴스에서 한 속성 이름은 한 곳에서만 놓으세요 — 그룹 여럿이 같은 이름을 가지면
q.Attr.Overridden(...)으로 하나로 합쳐 놓거나(뒤 인자가 이깁니다), 먼저 것을 그 자리에서 물린 뒤에 다음:Set에서 다시 놓으세요. 엔진이 값이나 이름을 거부했다면(아래 관측) 그 값·이름을 엔진이 받는 것으로 고치세요. - 관측(계약 아님): 이 에러가 한 번 나면 그 인스턴스의 해당 그룹은 부분만 써진 채 남고 앞선 이름들이 잠깁니다(정의되지 않은 동작). 엔진이
SetAttribute를 거부한 뒤(지원하지 않는 값 타입·이름 규칙)에도 같은 문구가 날 수 있습니다 — 이름이 먼저 주인에게 묶이고 그다음 엔진에 쓰기 때문이라, 값을 고쳐 다시 놓아도 “이미 다른 주인” 안내가 옵니다. - 참고:
q.AttrKey(name)
Quad0004
섹션 제목: “Quad0004”{ctx}: attribute name "{name}" appears more than once — quad-base/src/Attr/init.luau
- 언제:
q.Attr.Merged(...)에 넘긴 여러Attr값이 같은 속성 이름을 중복해서 선언할 때. 내부 헬퍼flattenArg가overwrite=false로Store나 평범한 테이블을 펼치다 같은 이름을 만나는 분기도 같은 번호이지만, [2026-11-04 기준] 공개 표면 중 그 조합에 닿는 호출은 없습니다 —q.Attr.Merged/q.Attr.Overridden은 인자를Attr값으로만 제한하고, 생성자q.Attr(...)는 항상overwrite=true로 부릅니다. - 고치려면: 이름이 겹치지 않게 하거나, 겹침을 허용하려면
q.Attr.Overridden을 쓰세요. - 참고:
q.Attr.Merged(...)
Quad0007
섹션 제목: “Quad0007”{ctx}: attribute "{name}" cannot be a function - attribute values are raw values or State — quad-base/src/Attr/init.luau
- 언제: 평범한 테이블 값 자리에 함수를 뒀을 때, 또는
q.Attr(store)로 넘긴Store의 필드에 함수를 직접 넣었을 때 — 속성 값은 원시 값이거나State/q.None이어야 합니다. - 고치려면: 함수 대신 값 자체나
State를 넘기세요. - 참고:
q.Attr(...)
Quad0008
섹션 제목: “Quad0008”{ctx}: attribute "{name}" cannot be a table - attribute values are raw values, None or State (got {typeof(v)}) — quad-base/src/Attr/init.luau
- 언제: 평범한 테이블 값 자리에 (
None도State도 아닌) 또 다른 테이블을 뒀을 때, 또는q.Attr(store)로 넘긴Store의 필드에 그런 테이블을 직접 넣었을 때 — 엔진은 그런 테이블을 속성 값으로 저장할 수 없습니다(Slot/Ref/Tween/Modifier 등이 여기 걸립니다). - 고치려면: 원시 값이나
State,q.None만 값 자리에 두세요. - 참고:
q.Attr(...)
Quad0010
섹션 제목: “Quad0010”{ctx}: arguments must be Stores, Attr values or plain tables — quad-base/src/Attr/init.luau
- 언제:
q.Attr(...)에Store/Attr/평범한 테이블이 아닌 다른 것을 넘겼을 때. - 고치려면: 인자를 그 세 종류 중 하나로 바꾸세요.
- 참고:
q.Attr(...)
Quad0011
섹션 제목: “Quad0011”Attr.Merged: arguments must be Attr values — quad-base/src/Attr/init.luau
- 언제:
q.Attr.Merged(...)에Attr값이 아닌 인자를 넘겼을 때. - 고치려면: 모든 인자를
q.Attr(...)로 만든 값으로 바꾸세요. - 참고:
q.Attr.Merged(...)
Quad0012
섹션 제목: “Quad0012”Attr.Overridden: arguments must be Attr values — quad-base/src/Attr/init.luau
- 언제:
q.Attr.Overridden(...)에Attr값이 아닌 인자를 넘겼을 때. - 고치려면: 모든 인자를
Attr값으로 바꾸세요. - 참고:
q.Attr.Overridden(...)
Quad0014
섹션 제목: “Quad0014”{fnName}: value of "{name}" must not be nil - use None to delete — quad-base/src/Attr/init.luau
- 언제: 타입드 Attr 패밀리(
StringAttr/NumberAttr/BooleanAttr)의 값 자리에 리터럴nil을 넘겼을 때 — 평범한 테이블은nil을 담을 수 없어 항목이 조용히 사라지는 것을 막습니다. - 고치려면:
nil대신q.None을 쓰세요(지우는 뜻입니다). - 참고:
q.StringAttr(name, value)
Quad0015
섹션 제목: “Quad0015”{fnName}: value of "{name}" must be a {luaType}, State or None (got {typeof(value)}) — quad-base/src/Attr/init.luau
- 언제: 타입드 Attr 패밀리의 값이
State도q.None도 아니면서, 그 패밀리의 원시 타입(StringAttr이면string등)과 다를 때. - 고치려면: 값 타입을 맞추거나
State/q.None으로 감싸세요. - 참고:
q.StringAttr(name, value)
Quad0016
섹션 제목: “Quad0016”Attr: the same group value is placed at two positions of this instance — quad-base/src/Attr/init.luau
- 언제: 같은
Attr그룹 값 객체(테이블 신원 기준)를 한 인스턴스의 서로 다른 두 props 자리에 동시에 놓았을 때. - 고치려면: 그 그룹은 한 자리에만 놓으세요. 자리마다 새
q.Attr(...)를 만들어 놓는 것은 답이 아닙니다 — 같은 이름을 두 그룹이 주장하게 돼 곧바로Quad0002(다른 owner가 이미 묶음)가 납니다. - 참고:
q.Attr(...)
Quad0199
섹션 제목: “Quad0199”Tag: names must be strings - an empty string is not a tag name — quad-base/src/Tag.luau
- 언제:
q.Tag(...)나tag:Added/tag:Removed의 이름 자리에 빈 문자열""을 넘겼을 때. - 고치려면: 비어 있지 않은 이름을 쓰세요.
- 참고: Tag
Quad0200
섹션 제목: “Quad0200”Tag: names must be strings, Tags, or a plain {...} list of those (got an AttrKey/Mapper descriptor) — quad-base/src/Tag.luau
Tag: names must be strings, Tags, or a plain {...} list of those (got {typeof(v)}) — quad-base/src/Tag.luau
Tag: names must be strings, Tags, or a plain {...} list of those (got a table with a metatable) — quad-base/src/Tag.luau
- 언제: 이름 자리에
AttrKey/Mapper같은 브랜드 테이블을 넘겼을 때 — 문자열도,Tag도, 평범한 리스트도 아닙니다. - 언제: 이름 자리에 문자열도,
Tag도, 리스트도 아닌 값(숫자, 불린 등)을 넘겼을 때. - 언제: 이름 자리에 메타테이블이 달린 테이블을 넘겼을 때 —
State나Attr같은 quad 값도 포함되고(q.Tag(state)도 이 에러입니다),q.None도 그렇습니다(q.Tag(q.None)·tag:Added(q.None)—None은 “없음” 인자가 아니라 메타테이블 있는 테이블; “없음”은nil로).q.Tag(...)의__call인자는 타입 검사가 없어 strict도 잡지 못합니다. 문자열도,Tag도, 평범한 리스트도 아닙니다. - 고치려면: 문자열,
Tag, 또는 그것들의 평범한(메타테이블 없는){...}리스트를 넘기세요.State를 따라가는 태그가 목적이었다면 문자열로 바꾸는 건 답이 아닙니다 —state:Compute(function(v) return q.Tag(v) end)를 숫자 키 자리에 놓으세요. - 참고:
q.Tag(...names)
Quad0202
섹션 제목: “Quad0202”Tag: names must be strings, Tags, or a plain {...} list of those - a name list is an array, not a hash table — quad-base/src/Tag.luau
- 언제: 이름 자리의 리스트가 배열이 아니라 해시 테이블(정수가 아니거나 1 미만인 키를 가짐)일 때.
- 고치려면: 배열(1부터 연속된 정수 키)로 주세요.
- 참고:
q.Tag(...names)
Quad0203
섹션 제목: “Quad0203”Tag: names must be strings, Tags, or a plain {...} list of those - a name list cannot have nil holes — quad-base/src/Tag.luau
- 언제: 이름 리스트 중간에
nil구멍이 있을 때(항목 수와 최대 인덱스가 다를 때). - 고치려면:
nil대신 그 자리를 빼거나 실제 값을 채우세요. - 참고:
q.Tag(...names)
Quad0205
섹션 제목: “Quad0205”Tag:Contains: names must be strings (got {typeof(name)} at argument {i}) — quad-base/src/Tag.luau
- 언제:
tag:Contains(...names)의 가변 인자 중 하나가 문자열이 아닐 때(nil포함). - 고치려면: 검사할 이름을 전부 문자열로 넘기세요.
- 참고:
tag:Contains(...names)
Quad0206
섹션 제목: “Quad0206”Tag: Apply factory must be a function (got {typeof(factory)}) — quad-base/src/Tag.luau
- 언제:
tag:Apply(factory)의factory자리가 함수가 아닐 때. - 고치려면: 함수를 넘기세요.
- 참고:
tag:Apply(factory)
Quad0207
섹션 제목: “Quad0207”Tag.Merged: arguments must be Tag values — quad-base/src/Tag.luau
- 언제:
q.Tag.Merged(...tags)의 인자 중nil이 아니면서Tag도 아닌 값을 넘겼을 때 —Tag.Merged는Tag만 받는 엄격한 철자입니다. - 고치려면:
Tag값만 넘기세요. 문자열이나 리스트를 섞고 싶으면q.Tag(...)를 쓰세요. - 참고:
q.Tag.Merged(...tags)
폐기된 번호
섹션 제목: “폐기된 번호”업데이트로 폐기되어 더는 나오지 않는 에러 번호입니다. 옛 번호를 만났다면 아래 목록에서 지금 쓰는 번호를 찾으세요.
폐기된 번호 목록
- Quad0003 — 4.0.0부터 같은 실수는
Quad0001입니다. 옛 문구:{ctx}: attribute name cannot be empty - Quad0005 — 4.0.0부터 같은 실수는
Quad0004입니다. 옛 문구:Attr.Merged: attribute name "{name}" appears more than once - Quad0006 — 4.0.0부터 같은 실수는
Quad0001입니다. 옛 문구:{ctx}: plain-table keys must be non-empty strings - Quad0009 — 4.0.0부터 같은 실수는
Quad0004입니다. 옛 문구:{ctx}: attribute name "{name}" appears more than once - Quad0013 — 4.0.0부터 같은 실수는
Quad0001입니다. 옛 문구:{fnName}: name must be a non-empty string - Quad0201 — 이제 던지지 않습니다. 이름 리스트의 중첩 깊이에는 한도가 없고, 리스트가 자기 자신을 담는 것(
t[1] = t)은 정의되지 않은 동작입니다 — 지금은 재귀가 스택을 넘쳐 quad 내부 줄의 에러로 끝납니다(관측 — 계약 아님). 이 번호는 다른 에러에 다시 쓰지 않습니다. 참고:q.Tag(...names). 옛 문구:Tag: names must be strings, Tags, or a plain {...} list of those - this list nests deeper than 64 levels (does it contain itself?) - Quad0204 — 4.0.0부터 같은 실수는
Quad0200입니다. 옛 문구:Tag: names must be strings, Tags, or a plain {...} list of those (got {typeof(v)}) - Quad0237 — 4.0.0부터 같은 실수는
Quad0200입니다. 옛 문구:Tag: names must be strings, Tags, or a plain {...} list of those (got a table with a metatable)
Answered: 0 / 0 (0%)