---
source_url: https://docs.dolphindb.cn/zh/funcs/m/membermodify.html
fetched_at: 2026-05-19T09:31:32Z
category: funcs
title: memberModify!
sha1: ca6f2802b2d76a6175974f280355873f99150bff
---

# memberModify!

## 语法

`memberModify!(obj, function, indices, parameters)`

## 详情

修改元组或 ANY 字典的成员对象，也可修改面向对象的编程（OOP）中的对象。

## 参数

**obj** 一个元组或值为 ANY 类型的字典，或者一个 OOP 对象。

**function**一个内置的系统函数，该函数的第一个参数是可修改的，例如 append!。

**indices** 标量、向量或元组，表示指向一个或多个成员对象的索引或键值。

- 若是一个元组，用于表示多维度索引。元组的长度表示索引的深度。
- 若是一个向量，表示对多个成员进行修改。

**parameters**
*function* 除第一个参数外的其它参数。*parameters* 的维度必须与 *indices*,
*function* 的参数个数匹配。

## 返回值

无

## 例子

### 例 1

创建元组 a，修改其中的一个元素，可见前后对比。

```dolphindb
a = (1 2, 3 4 5)
memberModify!(a, append!, 0, 3 4)
a
//output: a = (1 2 3 4, 3 4 5)
```

创建字典
d，修改其中的两个元素，可见前后对比。

```dolphindb
d = dict(`A`B`C, (1 2, 3 4, 5 6))
d
/*output:
A->[1,2]
B->[3,4]
C->[5,6]
*/

d.memberModify!(append!,`A`B, 3 4) 
d
/*output:
A->[1,2,3]
B->[3,4,4]
C->[5,6]
 */
```

创建元组 c，其包含基于表 t，字典 d
和一个元组。

```dolphindb
t = table(1 2 3 as val1, 4 5 6 as val2)
d = dict(`A`B`C, (1 2, 3 4, 5 6))
c = (t, d, [1 2 3, 4 5 6])
c
/*output: 
(val1 val2
---- ----
1    4   
2    5   
3    6   
,C->[5,6]
A->[1,2]
B->[3,4]
,([1,2,3],[4,5,6]))
*/
```

调用 `memberModify!` 对元组第 3 个元素 `[1 2 3, 4 5 6]` 的第 1
个元素 [1, 2, 3] 添加元素 4 和 5。要修改的对象需要用两个维度来指定，因此 indices 使用元组 (2, 0)
来表示。

```dolphindb
c.memberModify!(append!, (2, 0), 4 5)
/*output: 
(val1 val2
---- ----
1    4   
2    5   
3    6   
,C->[5,6]
A->[1,2]
B->[3,4]
,([1,2,3,4,5],[4,5,6]))
*/
```

在该基础上，继续向元组的第 2 个元素（字典）的键值 B 指定的对象写入新数据 5 和 7。indices 仍然使用元组 （1，`B)
来表示。

```dolphindb
c.memberModify!(append!, (1,`B), 5 7)
c
/*output: 
(val1 val2
---- ----
1    4   
2    5   
3    6   
,C->[5,6]
A->[1,2]
B->[3,4,5,7]
,([1,2,3,4,5],[4,5,6]))
*/
```

### 例 2

约定名为 A 的类并进行实例化，使用 `memberModify!` 进行写入操作，打印向量 a 的数据，可得预期结果。

```dolphindb
class A {
	a :: INT VECTOR
	def A() {
		a = []
	}
}

v = A()
memberModify!(v, append!, "a", 1)
print v.a 
//output: [1]

memberModify!(v, append!, "a", 11)
print v.a 
//output: [1,11]
```
