writeField method

Object? writeField(
  1. String key,
  2. Object? value
)

If this lua object is a table, then it writes value to key and returns the field key. Otherwise if the lua object is not a table, then null is returned.

Alternatively, if the field value is known to be a LuaObject whose LuaObject.id will be the same as key, then consider using writeFieldFrom.

Implementation

Object? writeField(String key, Object? value) {
  if (skipSemanitcs) return LuaObject.noSemantics(key);

  Object? result;
  if (isRef) {
    result = deref().writeField(key, value);
  } else if (isTable) {
    result = switch (_fields![key]) {
      final LuaObject obj => obj.value = value,
      null => _fields![key] = LuaObject.variable(key, value),
    };
  }
  _onWrite?.call(key, value);
  return result;
}