diff --git a/docs/contracts/visibility-and-getters.rst b/docs/contracts/visibility-and-getters.rst index 97af917a3f..0df83e8f5b 100644 --- a/docs/contracts/visibility-and-getters.rst +++ b/docs/contracts/visibility-and-getters.rst @@ -109,7 +109,7 @@ In the following example, ``D``, can call ``c.getData()`` to retrieve the value .. index:: ! getter;function, ! function;getter .. _getter-functions: -Getter Functions +توابع گیرنده (Getter Functions) ================ The compiler automatically creates getter functions for @@ -156,12 +156,11 @@ it evaluates to a state variable. If it is accessed externally } } -If you have a ``public`` state variable of array type, then you can only retrieve -single elements of the array via the generated getter function. This mechanism -exists to avoid high gas costs when returning an entire array. You can use -arguments to specify which individual element to return, for example -``myArray(0)``. If you want to return an entire array in one call, then you need -to write a function, for example: +اگر شما آرایه ای از متغیر های وضعیت از نوع ``public`` دارید، شما قادر خواهید بود که فقط یک +عنصر از آرایه را توسط تابع گیرنده تولید شده بر گردانید. این مکانیزم(سازوکار) بوجود آمده تا +از هزینه بالای گاز هنگام برگرداندن کل آرایه جلوگیری کند. شما می توانید با مشخص کردن +ورودی عنصر مورد نیاز خود از آرایه بازگردانید، برای مثال ``myArray(0)`` . اگر شما می خواهید کل +آرایه را در یک فراخوانی بازگردانید نیاز مند نوشتن یک تابع هستید به عنوان مثال: .. code-block:: solidity @@ -186,8 +185,8 @@ to write a function, for example: } } -Now you can use ``getArray()`` to retrieve the entire array, instead of -``myArray(i)``, which returns a single element per call. +حالا شما می توانید از ``()getArray`` جهت گرفتن کل آرایه، بجای استفاده از ``myArray(i)`` که یک +عنصر به ازای هر فراخوانی باز می گرداند ، استفاده کنید. The next example is more complex: @@ -208,9 +207,9 @@ The next example is more complex: mapping (uint => mapping(bool => Data[])) public data; } -It generates a function of the following form. The mapping and arrays (with the -exception of byte arrays) in the struct are omitted because there is no good way -to select individual struct members or provide a key for the mapping: +این تابعی به شکل زیر ایجاد می کند. +نگاشت و آرایه‌ها (به استثنای آرایه‌های بایت) در struct حذف می‌شوند +، زیرا هیچ راه مناسبی برای انتخاب اعضای struct به صورت جداگانه یا ارائه کلیدی برای نگاشت وجود ندارد: .. code-block:: solidity diff --git a/docs/layout-of-source-files.rst b/docs/layout-of-source-files.rst index 89c120ba5f..5e6f66c788 100644 --- a/docs/layout-of-source-files.rst +++ b/docs/layout-of-source-files.rst @@ -209,6 +209,6 @@ compiler see :ref:`Path Resolution `. یک کامنت تک خطی توسط هر پایان دهنده خط unicode (LF ، VF ، FF ، CR ، NEL ، LS یا PS) در رمزگذاری UTF-8 خاتمه می‌یابد. ترمیناتور بعد از کامنت هنوز بخشی از کد منبع است، بنابراین اگر یک نماد ASCII نباشد (اینها NEL ، LS و PS هستند)، منجر به خطای تجزیه می‌شود. -علاوه بر این، نوع دیگری از کامنت به نام کامنت NatSpec وجود دارد که در :ref:`راهنمای استایل` به تفصیل آورده شده است. آنها با یک اسلش سه گانه (``///``) یا یک بلوک ستاره دوتایی (``/** ... */``) نوشته می‌شوند و باید مستقیماً بالاتر از دستورات یا دستورات تابع استفاده شوند. +علاوه بر این، نوع دیگری از کامنت به نام کامنت NatSpec وجود دارد که در :ref:`راهنمای استایل` به تفصیل آورده شده است. آنها با یک اسلش سه گانه (``///``) یا یک بلاک ستاره دوتایی (``/** ... */``) نوشته می‌شوند و باید مستقیماً بالاتر از دستورات یا دستورات تابع استفاده شوند. diff --git a/docs/types/reference-types.rst b/docs/types/reference-types.rst index e40936a151..7bd4b3b500 100644 --- a/docs/types/reference-types.rst +++ b/docs/types/reference-types.rst @@ -386,7 +386,7 @@ length or index access. .. note:: - افزایش طول یک آرایه storage با فراخوانی ``()push`` هزینه گاز ثابت را دارد زیرا مقداردهی اولیه + افزایش طول یک آرایه storage با فراخوانی ``()push`` هزینه گَس ثابت را دارد زیرا مقداردهی اولیه storage صفر می‌باشد، در حالی که کاهش طول با فراخوانی ``()pop`` هزینه‌ای دارد که به "اندازه" عنصر حذف شده بستگی دارد. اگر آن عنصر آرایه‌ای باشد، می‌تواند بسیار پرهزینه باشد، زیرا شامل پاک کردن صریح عناصر حذف شده مشابه با فراخوانی :ref:`delete` روی آنها است. diff --git a/docs/types/value-types.rst b/docs/types/value-types.rst index d36cc12287..303a424216 100644 --- a/docs/types/value-types.rst +++ b/docs/types/value-types.rst @@ -163,7 +163,7 @@ to the type of the left operand is always performed at the end, but not mentione .. note:: در حالت بررسی شده ، توان فقط از آپکد ``exp`` نسبتاً ارزان برای پایه‌های کوچک استفاده می‎کند. برای - موارد ``x**3`` ، ممکن است عبارت ``x*x*x`` ارزان تر باشد. در هر صورت، تست هزینه گاز و استفاده از + موارد ``x**3`` ، ممکن است عبارت ``x*x*x`` ارزان تر باشد. در هر صورت، تست هزینه گَس و استفاده از بهینه ساز توصیه می‌شود. @@ -288,7 +288,7 @@ to the type of the left operand is always performed at the end, but not mentione اگر ``x`` یک آدرس قرارداد باشد، کد آن (به طور خاص تر: تابع :ref:`Receive Ether` در صورت وجود، یا در غیر این صورت :ref:`تابع Fallback` در صورت وجود) همراه با فراخوانی ``transfer`` اجرا می‌شود (این ویژگی - EVM است و نمی‌توان جلوی آن را گرفت ) اگر گاز آن اجرا تمام شود یا به هر صورتی از کار بیفتد، انتقال اتر + EVM است و نمی‌توان جلوی آن را گرفت ) اگر گَس آن اجرا تمام شود یا به هر صورتی از کار بیفتد، انتقال اتر برگردانده می‌شود و قرارداد جاری با استثنا متوقف می‌شود. @@ -298,7 +298,7 @@ Send نقطه مقابل سطح پایین ``transfer`` است. در صورت .. warning:: ستفاده از ``send`` خطرات زیادی دارد: اگر فراخوانی پشته عمق 1024 باشد (که همیشه می‌تواند توسط - فراخوانی کننده مجبور شود) انتقال شکست میخورد و اگر گاز گیرنده شما تمام شود نیز از کار می‌افتد. بنابراین + فراخوانی کننده مجبور شود) انتقال شکست میخورد و اگر گَس گیرنده شما تمام شود نیز از کار می‌افتد. بنابراین برای انجام مطمئن انتقال اتر، همیشه مقدار برگشتی ``send`` ، را با استفاده از ``transfer`` کنید یا حتی بهتراست که: از الگویی استفاده کنید که گیرنده پول را برداشت کند. @@ -330,7 +330,7 @@ Send نقطه مقابل سطح پایین ``transfer`` است. در صورت ورژن های قبلی سالیدیتی به این توابع اجازه می‌دهد آرگومان‌های دلخواه را دریافت کنند و همچنین اولین آرگومان از نوع ``bytes4`` را به گونه دیگری مدیریت کنند. این موارد در نسخه 0.5.0 حذف شده‌اند. -تنظیم گاز تامین شده با اصلاح کننده ``gas`` امکان پذیر است: +تنظیم گَس تامین شده با اصلاح کننده ``gas`` امکان پذیر است: .. code-block:: solidity @@ -368,7 +368,7 @@ Send نقطه مقابل سطح پایین ``transfer`` است. در صورت .. note:: - بهتر است بدون توجه به اینکه آیا حالت از آن خوانده می شود یا روی آن نوشته شده است، از تکیه بر مقادیر گاز سخت رمزگذاری شده در کد قرارداد هوشمند خود جلوگیری کنید، زیرا این امر می تواند مشکلات زیادی را به همراه داشته باشد. همچنین، دسترسی به گاز ممکن است در آینده تغییر کند. + بهتر است بدون توجه به اینکه آیا حالت از آن خوانده می شود یا روی آن نوشته شده است، از تکیه بر مقادیر گَس سخت رمزگذاری شده در کد قرارداد هوشمند خود جلوگیری کنید، زیرا این امر می تواند مشکلات زیادی را به همراه داشته باشد. همچنین، دسترسی به گَس ممکن است در آینده تغییر کند. .. note:: @@ -383,7 +383,6 @@ Send نقطه مقابل سطح پایین ``transfer`` است. در صورت -------------- -انواع قرارداد هر :ref:`قراردادی` نوع خاص خود را مشخص می‌کند. به طور ضمنی می‌توانید قراردادها را به قراردادهایی که از آنها به ارث می‌برند تبدیل کنید. قراردادها را می‌توان به طور صریح به نوع ``address`` تبدیل و از آنها تغییر داد. تبدیل صریح به نوع ``address payable`` فقط از آنجا امکان پذیر است که نوع قرارداد تابع برگشتی قابل دریافت یا پرداخت داشته باشد. تبدیل هنوز با استفاده از ``address(x)`` انجام می‌شود. اگر نوع قرارداد تابع برگشت پذیر یا قابل پرداخت نباشد، تبدیل به ``address payable`` را می‌توان با استفاده از ``payable(address(x))`` انجام داد. در بخش مربوط به نوع :ref:`آدرس
` می‌توانید اطلاعات بیشتری کسب کنید. @@ -417,19 +416,6 @@ Send نقطه مقابل سطح پایین ``transfer`` است. در صورت مقدارهای مختلف ``bytes32`` ، ... ، ``bytes3`` ، ``bytes2`` ، ``bytes1`` توالی بایت را از یک تا 32 نگه می‌دارد. -عملگرها: -• مقایسه ها: <=، <، ==، !=، >=، > (ارزیابی به bool) -• عملگرهای بیت: &، |، ^ (bitwise exclusive یا) ، ~ (bitwise negation) -• عملگرهای شیفت : << (شیفت چپ) ، >> (شیفت راست) - -* مقایسه ها: ``=>`` ، ``>`` ، ``==`` ، ``=!`` ، ``=<`` ، ``<`` (ارزیابی به ``bool``) -* عملگرهای بیت: ``&`` ، ``|`` ، ``^`` (bitwise exclusive یا) ، ``~`` (bitwise negation) -* عملگرهای شیفت : ``>>`` (شیفت چپ) ، ``<<`` (شیفت راست) -* دسترسی به Index: اگر ``x`` از نوع ``bytesI`` باشد، سپس ``x[k]`` برای ``0 <= k < I`` بایت ``k`` را برمی‌گردانم (فقط برای خواندن). -* Shift operators: ``<<`` (left shift), ``>>`` (right shift) -* Index access: If ``x`` is of type ``bytesI``, then ``x[k]`` for ``0 =< k < I`` returns the ``k`` th byte (read-only). - - عملگرها: * Comparisons: ``<=``, ``<``, ``==``, ``!=``, ``>=``, ``>`` (evaluate to ``bool``) @@ -874,7 +860,7 @@ Function types are notated as follows: توابع خارجی (یا عمومی) برای داشتن اعضای اضافی ``gas(uint).`` و ``value(uint).`` استفاده می‌شود. اینها در سالیدیتی نسخه 0.6.2 منسوخ شده و در سالیدیتی نسخه 0.7.0 حذف شدند. در عوض - از ``{...:gas }`` و ``{...:value}`` برای تعیین مقدار گاز یا مقدار wei ارسال شده به یک + از ``{...:gas }`` و ``{...:value}`` برای تعیین مقدار گَس یا مقدار wei ارسال شده به یک تابع استفاده کنید. برای اطلاعات بیشتر به قسمت :ref:`فراخوانی تابع خارجی` مراجعه کنید.