> For the complete documentation index, see [llms.txt](https://chihaolu.gitbook.io/all-in-one-solidity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chihaolu.gitbook.io/all-in-one-solidity/part-i-basic/chapter-5-han-shi-function/statemutability.md).

# 【stateMutability】

除了以上的可視性之外，我們還可以增加一些函數的敘述來定義這個函數的類型。

```solidity
function myFunction() <visibility specifier> <stateMutability> returns (bool) {
    return true;
}
```

* `pure` : 不允許修改或訪問
* `view` : 不允許修改狀態變量
* `payable` : 允許函數在調用同時接收 Ether，只有宣告 `payable` 的物件才可以進行交易

#### View vs. Pure

* 在早些版本他們被稱為`constant`函數
* View Function: 可閱讀但不可更改任何狀態變數
* Pure Function: 不可閱讀也不可更改任何狀態變數

#### Pure Function

* 可以呼叫其他的Pure function
* 不可以呼叫View function，也不可以呼叫其他的沒有標明Pure或View，但卻會更改到狀態的函數（也被稱作Writing function）
* 不可以讀取或對狀態變數做任何更改

#### View Function

* 可以存取任何的狀態變數，但僅能做讀取用，不可進行修改。
* 可以呼叫其他的Pure function
* 不可以呼叫其他的沒有標明`pure`或`view`，會更改到狀態的函數（也被稱作Writing function）
