---
title: "setrawmetatable"
description: "Sets the raw metatable and returns the original value."
---

```lua
setrawmetatable(value: any, mt: table): any
```

---

## Aliases

None.

---

## Arguments

<ParamField body="value" type="any" required>
  The object whose raw metatable is replaced.
</ParamField>

<ParamField body="mt" type="table" required>
  The metatable to assign.
</ParamField>

---

## Returns

<ResponseField name="value" type="any">
  The original value after its raw metatable is set.
</ResponseField>

Requires a table, not nil. For userdata and a writable new metatable, existing __namecall and __newindex are preserved when omitted.

---

## Example

```lua
local t = {}
setrawmetatable(t, {__index = {answer = 42}})
print(t.answer)
```
