Funksjoner og synlighetsmodifikatorer
Forstå hvordan funksjoner defineres, hvordan synligheten deres håndteres (public, private, internal, external), og hvordan funksjonsparametere og returverdier behandles.
Funksjoner og synlighetsmodifikatorer er en gratis leksjon i Blokkjede-smartkontrakter med Solidity på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Blokkjede-smartkontrakter med Solidity, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Blokkjede-smartkontrakter med Solidity inneholder totalt 4 leksjoner.
Funksjoner: Kontraktens handlinger
Velkommen til leksjon 3! I dag skal vi se nærmere på funksjoner i Solidity. Tenk på funksjoner som handlingene eller operasjonene smartkontrakten Deres kan utføre.
De gjør det mulig å organisere koden, gjenbruke den og definere hvordan brukere (eller andre kontrakter) kan samhandle med kontraktens data og logikk.
Definere en enkel funksjon
Alle funksjoner trenger et navn og en kropp der koden ligger. Her er grunnstrukturen:
- Nøkkelordet
function - Funksjonsnavn, for eksempel
greet - Parenteser
()for parametere - Krøllparenteser
{}for kodeblokken
La oss se på et svært enkelt eksempel.
Grunnleggende funksjonseksempel
Denne kontrakten har en funksjon med navnet getName. Den tar ikke imot noen inndata og returnerer ganske enkelt en streng. Vi legger til synlighet snart!
Prøv å kjøre den for å se hvordan en funksjon kan returnere en verdi.
pragma solidity ^0.8.0;
contract MyFirstFunctions {
function getName() pure returns (string memory) {
return "Coddy";
}
}Kontrollere tilgang: synlighet
Solidity-funksjoner har, i likhet med variabler, synlighetsmodifikatorer. Disse definerer hvem som kan kalle en funksjon, og hvordan.
Det er avgjørende å forstå synlighet for å oppnå sikkerhet og utforme kontrakter på riktig måte. Det finnes fire typer: public, external, internal og private.
Public-funksjoner: åpne for alle
En public-funksjon er den mest tilgjengelige. Den kan kalles:
- Utenfra kontrakten, av brukere eller andre kontrakter.
- Innenfra kontrakten, av andre funksjoner i samme kontrakt.
Hvis De ikke angir synlighet, er funksjoner som standard public. Det er god praksis å alltid angi dette uttrykkelig.
Public-funksjon i praksis
Her er både setValue og getValue public. De kan kalle dem direkte fra en ekstern konto eller en annen kontrakt.
Kjør dette eksempelet, og prøv å kalle begge funksjonene etter distribusjon.
pragma solidity ^0.8.0;
contract PublicExample {
uint public myValue;
function setValue(uint _newValue) public {
myValue = _newValue;
}
function getValue() public view returns (uint) {
return myValue;
}
}External-funksjoner: bare eksterne kall
external-funksjoner kan bare kalles utenfra kontrakten. De kan ikke kalles internt av andre funksjoner i samme kontrakt.
Dette brukes ofte for funksjoner som er inngangspunkter for ekstern samhandling. Det er også mer gasseffektivt når store datamengder i arrayer skal mottas.
Eksempel på en external-funksjon
Legg merke til at onlyExternal bare kan kalles utenfra. Hvis en annen funksjon i ExternalExample forsøkte å kalle den, ville det føre til en kompileringsfeil.
Kjør dette for å se den eksterne samhandlingen.
pragma solidity ^0.8.0;
contract ExternalExample {
uint public count = 0;
function incrementExternal() external {
count++;
}
// This function can't call incrementExternal() directly.
// Try adding 'incrementExternal();' inside this function to see the error.
function getCount() public view returns (uint) {
return count;
}
}Internal og private: for intern bruk
internal-funksjoner kan bare kalles fra den aktuelle kontrakten eller av kontrakter som arver fra den.
private-funksjoner er de mest begrensede. De kan bare kalles fra kontrakten de er definert i. Selv kontrakter som arver fra den, kan ikke kalle dem.
De egner seg godt for hjelpefunksjoner som ikke bør være tilgjengelige utenfra.
Parametere og returverdier
Funksjoner kan ta imot parametere (inndata) og returnere verdier (utdata).
- Parametere defineres innenfor parentesene
(). - Returtyper angis ved hjelp av nøkkelordet
returns (type).
Dette gjør funksjoner dynamiske og gjør det mulig å behandle ulike data.
Kontroll av funksjonssynlighet
Hvilken av de følgende funksjonssynlighetsmodifikatorene betyr at en funksjon BARE kan kalles utenfra kontrakten, men IKKE fra en annen funksjon i samme kontrakt?
Oppsummering: Funksjoner og synlighet
Godt jobbet! De har lært det grunnleggende om Solidity-funksjoner.
- Funksjoner organiserer kontraktens logikk.
public: Kan kalles fra hvor som helst.external: Kan bare kalles utenfra.internal: Kan kalles innenfra og av avledede kontrakter.private: Kan bare kalles fra kontrakten de er definert i.- Funksjoner kan ta imot parametere og returnere verdier.
Deretter skal vi utforske mer komplekse datastrukturer, som mappings og dynamiske arrayer!
Lær deg Blokkjede-smartkontrakter med Solidity med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Funksjoner og synlighetsmodifikatorer» gratis?
Ja – hele teksten i «Funksjoner og synlighetsmodifikatorer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Blokkjede-smartkontrakter med Solidity-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Blokkjede-smartkontrakter med Solidity inneholder totalt 4 leksjoner.
Hva lærer jeg i «Funksjoner og synlighetsmodifikatorer»?
Forstå hvordan funksjoner defineres, hvordan synligheten deres håndteres (public, private, internal, external), og hvordan funksjonsparametere og returverdier behandles. Du øver på Blokkjede-smartkontrakter med Solidity med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Blokkjede-smartkontrakter med Solidity?
Ingen tidligere erfaring er nødvendig. Blokkjede-smartkontrakter med Solidity på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Funksjoner og synlighetsmodifikatorer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Blokkjede-smartkontrakter med Solidity-leksjonen?
Ja. Alle Blokkjede-smartkontrakter med Solidity-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Solidity-datatyper og variabler
- Kontrollstrukturer og løkker
- Funksjoner og synlighetsmodifikatorer
- Structs og enums