Solidity - Fonksiyonlar
Bir işlev, programınızın herhangi bir yerinde çağrılabilen yeniden kullanılabilir bir kod grubudur. Bu, aynı kodu tekrar tekrar yazma ihtiyacını ortadan kaldırır. Programcılara modüler kodlar yazmada yardımcı olur. İşlevler, bir programcının büyük bir programı birkaç küçük ve yönetilebilir işleve bölmesine izin verir.
Diğer gelişmiş programlama dilleri gibi, Solidity de fonksiyonları kullanarak modüler kod yazmak için gerekli tüm özellikleri destekler. Bu bölüm Solidity'de kendi işlevlerinizi nasıl yazacağınızı açıklar.
İşlev Tanımı
Bir işlevi kullanmadan önce onu tanımlamamız gerekir. Solidity'de bir işlevi tanımlamanın en yaygın yolu,function anahtar kelime, ardından benzersiz bir işlev adı, bir parametre listesi (boş olabilir) ve küme parantezleri ile çevrili bir ifade bloğu gelir.
Sözdizimi
Temel sözdizimi burada gösterilmektedir.
function function-name(parameter-list) scope returns() {
//statements
}
Misal
Aşağıdaki örneği deneyin. GetResult adında parametre almayan bir işlevi tanımlar -
pragma solidity ^0.5.0;
contract Test {
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint result = a + b;
return result;
}
}
Bir Fonksiyon Çağırma
Sözleşmede daha sonra bir yerde bir işlevi çağırmak için, aşağıdaki kodda gösterildiği gibi bu işlevin adını yazmanız yeterlidir.
Solidity'de dizenin nasıl çalıştığını anlamak için aşağıdaki kodu deneyin.
pragma solidity ^0.5.0;
contract SolidityTest {
constructor() public{
}
function getResult() public view returns(string memory){
uint a = 1;
uint b = 2;
uint result = a + b;
return integerToString(result);
}
function integerToString(uint _i) internal pure
returns (string memory) {
if (_i == 0) {
return "0";
}
uint j = _i;
uint len;
while (j != 0) {
len++;
j /= 10;
}
bytes memory bstr = new bytes(len);
uint k = len - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
return string(bstr);//access local variable
}
}
Solidity First Application bölümünde verilen adımları kullanarak yukarıdaki programı çalıştırın .
Çıktı
0: string: 3
Fonksiyon Parametreleri
Şimdiye kadar parametresiz fonksiyonlar gördük. Ancak bir işlevi çağırırken farklı parametreleri geçirme olanağı vardır. Aktarılan bu parametreler işlev içinde yakalanabilir ve bu parametreler üzerinde herhangi bir işlem yapılabilir. Bir işlev, virgülle ayrılmış birden çok parametre alabilir.
Misal
Aşağıdaki örneği deneyin. Bir kullandıkuint2strburada işlev. Bir parametre alır.
pragma solidity ^0.5.0;
contract SolidityTest {
constructor() public{
}
function getResult() public view returns(string memory){
uint a = 1;
uint b = 2;
uint result = a + b;
return integerToString(result);
}
function integerToString(uint _i) internal pure
returns (string memory) {
if (_i == 0) {
return "0";
}
uint j = _i;
uint len;
while (j != 0) {
len++;
j /= 10;
}
bytes memory bstr = new bytes(len);
uint k = len - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
return string(bstr);//access local variable
}
}
Solidity First Application bölümünde verilen adımları kullanarak yukarıdaki programı çalıştırın .
Çıktı
0: string: 3
Dönüş Bildirimi
Bir Solidity işlevinin isteğe bağlı bir returnBeyan. Bir işlevden bir değer döndürmek istiyorsanız bu gereklidir. Bu ifade, bir fonksiyondaki son ifade olmalıdır.
Yukarıdaki örnekte olduğu gibi, bir dizge döndürmek için uint2str işlevini kullanıyoruz.
Solidity'de bir işlev birden çok değer döndürebilir. Aşağıdaki örneğe bakın -
pragma solidity ^0.5.0;
contract Test {
function getResult() public view returns(uint product, uint sum){
uint a = 1; // local variable
uint b = 2;
product = a * b;
sum = a + b;
//alternative return statement to return
//multiple values
//return(a*b, a+b);
}
}
Solidity First Application bölümünde verilen adımları kullanarak yukarıdaki programı çalıştırın .
Çıktı
0: uint256: product 2
1: uint256: sum 3