Solidité : utilisation de la fonction et de ses propriétés

Remarque : les notes d'étude sont fournies à titre indicatif uniquement, veuillez me corriger s'il y a une erreur.

1. Format de déclaration de fonction dans Solidity

Le format de déclaration complet d'une fonction de solidité est :

function 函数名(参数)  public|private|internal|external  pure|view|constant  无返回值|returns (返回值类型)

2. Droits d'accès aux variables d'état : pur/vue/constant

Ce n'est que lorsque la fonction a une valeur de retour que vous devez utiliser pure, view, constant

  • pure : la fonction ne lit ni ne modifie la variable d'état. Lorsque la valeur de retour de la fonction est un argument plutôt qu'une variable, utilisez pure.
  • view : la fonction lit mais ne modifie pas la variable d'état. Lorsque la valeur de retour de la fonction est une variable globale ou une propriété, utilisez view. Les variables d'état ici contiennent également les données d'objet intégrées, l'horodatage, etc. de la blockchain.
  • constant : Il peut être compris comme l'ancienne version de view, qui équivaut à view

Remarque : Si une fonction contient le mot-clé view ou constant, la valeur de la variable d'état ne peut pas être modifiée. Cependant, si ces deux mots-clés sont inclus, la blockchain ne lit que les données de la blockchain par défaut, la lecture des données ne nécessite pas de gas, mais il est impossible de modifier la valeur de la variable d'état sans dépenser de gas. L'écriture de données ou la modification de la valeur d'une variable d'état coûte du gaz.

Si la fonction n'ajoute pas pure ou view, le représentant modifiera la valeur de la variable d'état

3. Droits d'accès aux fonctions : public/privé/interne/externe

Ethereum a quatre types de fonctions, public privé interne externe

  • public : a les droits d'accès maximum, peut être appelé en externe et en interne, et peut être hérité. N'importe qui peut appeler cette fonction, y compris les utilisateurs DAPP.
  • privé : ne peut pas être hérité, ne peut pas être appelé en externe, mais peut être appelé en interne. Seul le contrat lui-même peut appeler cette fonction, et private est limité à l'accès interne, et les sous-classes ne peuvent pas en hériter ou y accéder.
  • interne : peut être appelé en interne, ne peut pas être appelé en externe et peut être hérité. Les sous-classes peuvent hériter et être accessibles, et la classe actuelle est accessible.
  • externe : ne peut pas être appelé en interne, peut être appelé en externe, peut être hérité, si l'appel est forcé, passez "adresse", par exemple : this.func(). Les sous-classes peuvent être héritées et accessibles, mais la classe actuelle n'est pas accessible.

Guess you like

Origin blog.csdn.net/runrundream/article/details/126689526