کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

حلقه Loop Control در سالیدیتی

Solidity کنترل کاملی را برای مدیریت حلقه‌ها و عبارات سوئیچ فراهم می‌کند. ممکن است شرایطی پیش بیاید که لازم باشد از یک حلقه خارج شوید بدون اینکه به انتهای آن برسید. همچنین ممکن است شرایطی پیش بیاید که بخواهید بخشی از بلوک کد خود را رد کنید و تکرار بعدی حلقه را شروع نمایید. برای رسیدگی به چنین موقعیت‌هایی، Solidity دستورات break و continue را ارائه می‌کند. این عبارات به ترتیب برای بیرون آمدن یا شروع تکرار بعدی هر حلقه استفاده می شود.

جمله break

دستور break، که به طور خلاصه با دستور switch معرفی شد، برای خروج زودهنگام از یک حلقه استفاده و موجب خروج اجرا از پرانتزهای حلقه خواهد شد.

فلوچارت یک عبارت break به صورت زیر است:

 حلقه break_statement در سالیدیتی

مثال زیر استفاده از دستور break با حلقه while را نشان می دهد.

    pragma solidity ^0.5.0;

contract SolidityTest {
   uint storedData; 
   constructor() public{
      storedData = 10;   
   }
   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 (true) {
         len++;
         j /= 10;
         if(j==0){
            break;   //using break statement
         }
      }
      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);
   }
}

خروجی

0: string: 3

دستور continue

دستور continue به مفسر می گوید که فوراً تکرار بعدی حلقه را شروع و از بلوک کد باقی مانده صرف نظر کند. هنگامی که یک عبارت continue استفاده می شود، جریان برنامه بلافاصله به عبارت بررسی حلقه منتقل می شود و اگر شرط درست باقی بماند، تکرار بعدی را شروع می کند، در غیر این صورت کنترل از حلقه خارج خواهد شد.

این مثال استفاده از عبارت continue با حلقه while را نشان می دهد.

    pragma solidity ^0.5.0;

contract SolidityTest {
   uint storedData; 
   constructor() public{
      storedData = 10;   
   }
   function getResult() public view returns(string memory){
      uint n = 1;
      uint sum = 0;
      
      while( n < 10){
         n++;
         if(n == 5){
            continue; // skip n in sum when it is 5.
         }
         sum = sum + n;
      }
      return integerToString(sum); 
   }
   function integerToString(uint _i) internal pure 
      returns (string memory) {
      
      if (_i == 0) {
         return "0";
      }
      uint j = _i;
      uint len;
      
      while (true) {
         len++;
         j /= 10;
         if(j==0){
            break;   //using break statement
         }
      }
      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);
   }
}
1402/01/09 731
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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