Подпишись на канал фаундера и разработчика экосистемы tonpie
Как прочитать строку по одному символу за раз?
-
Предположим, у меня есть фрагмент, содержащий строку, и я хочу прочитать его символ за символом. Как мне это сделать?
Этот вопрос был импортирован из чата Telegram: <***Скрыто***
click to show
-
Для чтения фрагмента вы можете использовать
load_uint(8)
в функции.Более подробную информацию можно проверить на примере, подобном здесь: https://docs.ton.org/develop/smart-contracts/guidelines/tips#spend-less-gas-по-крупным-смарт-контрактам
() recv_external(slice in_msg) impure { var signature = in_msg~load_bits(512); var cs = in_msg; var (subwallet_id, valid_until, msg_seqno) = (cs~load_uint(32), cs~load_uint(32), cs~load_uint(32)); throw_if(36, valid_until <= now()); var ds = get_data().begin_parse(); var (stored_seqno, stored_subwallet, public_key, plugins) = (ds~load_uint(32), ds~load_uint(32), ds~load_uint(256), ds~load_dict()); ds.end_parse(); throw_unless(33, msg_seqno == stored_seqno); throw_unless(34, subwallet_id == stored_subwallet); throw_unless(35, check_signature(slice_hash(in_msg), signature, public_key)); accept_message(); set_data(begin_cell() .store_uint(stored_seqno + 1, 32) .store_uint(stored_subwallet, 32) .store_uint(public_key, 256) .store_dict(plugins) .end_cell()); commit(); cs~touch(); int op = cs~load_uint(8);