یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی
🎯 ثبت نام

آموزش تابع در سالیدیتی

یک تابع، گروهی از کدهای قابل استفاده مجدد است که می تواند در هر نقطه از برنامه شما فراخوانی شود. این کار نیاز به نوشتن تکراری همان کد را از بین می برد و به برنامه نویسان در نوشتن کدهای ماژولار کمک می کند. توابع به برنامه نویس اجازه می دهد تا یک برنامه بزرگ را به تعدادی عملکرد کوچک و قابل مدیریت تقسیم کند.

مانند هر زبان برنامه نویسی پیشرفته دیگری، Solidity نیز از تمام ویژگی های لازم برای نوشتن کدهای ماژولار با استفاده از توابع پشتیبانی می کند.

تعریف تابع در سالیدیتی

قبل از اینکه از یک تابع استفاده کنیم، باید آن را تعریف نماییم. رایج ترین راه برای تعریف یک تابع در Solidity استفاده از کلمه کلیدی تابع و به دنبال آن یک نام منحصر به فرد، لیستی از پارامترها (ممکن است خالی باشد) و یک بلوک دستور احاطه شده توسط پرانتزها است.

(نحو)Syntax

سینتکس اصلی در اینجا نشان داده شده است.

    function function-name(parameter-list) scope returns() {
        //statements
     }

مثال

مثال زیر را امتحان نمایید. تابعی به نام getResult تعریف شده که هیچ پارامتری را نمی گیرد.

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;
   }
}

فراخوانی یک تابع

برای فراخوانی یک تابع در جایی دیگر از برنامه، به سادگی باید نام آن تابع را همانطور که در کد زیر نشان داده شده است بنویسید.

کد زیر را امتحان کنید تا متوجه شوید که رشته در Solidity چگونه کار می کند.

    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
   }
}

پارامترهای تابع

تاکنون توابع بدون پارامتر را دیده‌ایم. اما امکان ارسال پارامترهای مختلف در حین فراخوانی یک تابع وجود دارد. این پارامترهای ارسال شده را می توان در داخل تابع ثبت کرد و هر گونه دستکاری را می توان روی آن پارامترها انجام داد. یک تابع می تواند چندین پارامتر را که با کاما از هم جدا شده اند، در نظر بگیرد.

مثال

در کد زیر از یک تابع uint2str استفاده کرده ایم.

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 می تواند یک دستور بازگشت اختیاری داشته باشد. اگر می خواهید مقداری را از یک تابع برگردانید، این مورد ضروری است. این دستور باید آخرین عبارت در یک تابع باشد.

مانند مثال بالا، ما از تابع uint2str برای برگرداندن یک رشته استفاده می کنیم.

در Solidity، یک تابع می تواند چندین مقدار را نیز برگرداند. مثال زیر را ببینید :

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);
   }
}
1402/01/14 666
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...