# lset

### 1. 基本語法

#### lse&#x74;**(`key` , `index`, `value`, `callback`)**&#x20;

透&#x904E;**`index`**&#x5C07;列表中對應元素更改&#x6210;**`value`**，如&#x679C;**`index`**&#x4E0D;在列表範圍內會回傳ERROR。

### 2. 範例

#### (1) 將列表中第2個元素(**`index = 1`**)更改成w0RLD。

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.del('foo');

const foo_list = ['Hello', 'World'];
client.rpush('foo', foo_list);
client.lrange('foo',0, -1, redis.print);

client.lset('foo', 1, 'w0RLD');
client.lrange('foo',0, -1, redis.print);
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
Reply: Hello,World
Reply: Hello,w0RLD
```
{% endtab %}
{% endtabs %}

#### (2) 錯誤情境：**`index`**&#x8D85;出範圍，不更動列表，並回報錯誤。

{% tabs %}
{% tab title="TypeScript" %}
```typescript
client.lset('foo', 2, 'War');
client.lrange('foo',0, -1, redis.print);
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Output-TS" %}
```
ReplyError: ERR index out of range
    at parseError (/Users/yeyuting/Documents/BotPlatform/Redis_Workshop/Textbook/node_modules/redis-parser/lib/parser.js:179:12)
    at parseType (/Users/yeyuting/Documents/BotPlatform/Redis_Workshop/Textbook/node_modules/redis-parser/lib/parser.js:302:14) {
  command: 'LSET',
  args: [ 'foo', 2, 'War' ],
  code: 'ERR'
}
Reply: Hello,w0RLD
```
{% endtab %}
{% endtabs %}
