Допис
Діліться своїми знаннями.
Що таке рідна функція і чи можемо ми називати їх безпосередньо?
Я натрапив на термін «рідна функція» у Move, але не можу знайти детальної інформації про це. Я чув, що вони оголошені в Move, але визначені зовні, часто в Rust. Чи означає це, що це внутрішні функції, які не можна викликати безпосередньо гаманцями чи іншими модулями?
- Move CLI
- Move
Відповіді
3У мові Sui Move рідною функцією є функція, яку ви оголошуєте в модулі Move, але фактичний код якої знаходиться поза основною системою, зазвичай написана на Rust для віртуальної машини Sui, обробляючи низькорівневі завдання, такі як криптографія або системні операції, якими синтаксис високого рівня Move не може безпосередньо керувати. Ви можете викликати ці функції безпосередньо з коду переміщення в інших модулах або скриптах, як і звичайні функції Move, якщо вони позначені як загальнодоступні, і ви імпортуєте модуль належним чином, щоб гаманці та інші контракти могли використовувати їх без особливих обмежень. Наприклад, щось на зразок sui: :hash: :keccak256 є рідною функцією, яку ви можете викликати для хеш-даних, і вона доступна у ваших транзакціях або контрактах, якщо ви правильно посилаєтесь на неї. Проблема полягає в тому, що вони попередньо визначені у фреймворку Sui, тому ви не можете створювати власні власні функції в Move; ви обмежені тим, що надає система, і їх поведінка залежить від реалізації Rust. Докладніше про те, як працюють власні функції в Move та їх використання
Власні функції в Move дійсно оголошуються всередині мови, але вони не мають тіла, оскільки вони реалізовані поза Move, як правило, у Rust. Незважаючи на це, якщо нативна функція є загальнодоступною, ви можете викликати її так само, як і будь-яку іншу функцію. Вони не обмежуються лише внутрішнім використанням. Ви можете викликати їх до тих пір, поки є необхідні дозволи та доступ громадськості.
Ви знаєте відповідь?
Будь ласка, увійдіть та поділіться нею.