tradisys_russia | Unsorted

Telegram-канал tradisys_russia - Waves / RIDE dev chat RU

712

Waves developers Ru

Subscribe to a channel

Waves / RIDE dev chat RU

have a great night everyone❤️❤️

Читать полностью…

Waves / RIDE dev chat RU

А если реально нужен цикл на произвольное число элементов, это тоже можно сделать в райд при помощи рекурсии

Читать полностью…

Waves / RIDE dev chat RU

Например, есть массив из 1000 разных целых чисел (в строке), перемешанных рандомно. И тебе надо заменить число 513 на 123. Можно сгородить фолд на 1000 элементов, а можно сделать красиво через makestring(split(.., "513"), "123")

Читать полностью…

Waves / RIDE dev chat RU

Тут нужен баланс, сложность скрипта или функции DApp рассчитывается исходя из максиально длинного пути выполнения, делая 100 получим большую сложность, которая не будет испльзоваться по факту. В больших скриптах это может стать проблемой, так как есть ограничение на сложность

Читать полностью…

Waves / RIDE dev chat RU

Ухты, я думал накладные расходы остануться, тогда пусть будет 100 ) Спасибо, попробую.

Читать полностью…

Waves / RIDE dev chat RU

нет, Ride ленивый язык, он не будет делать лишних итераций 🙂

Читать полностью…

Waves / RIDE dev chat RU

Ну вот, 37 и есть верхняя граница

Читать полностью…

Waves / RIDE dev chat RU

Значит возьми 50 и дело с концом

Читать полностью…

Waves / RIDE dev chat RU

нет, в том то и дело

Читать полностью…

Waves / RIDE dev chat RU

FOLD хочет знать верхнюю границу, она же понятна на этапе проектирования?

Читать полностью…

Waves / RIDE dev chat RU

явно указать 3 вместо size(...)

Читать полностью…

Waves / RIDE dev chat RU

FOLD хочет константу, да

Читать полностью…

Waves / RIDE dev chat RU

Я понимаю как преобразовать число в строку, мой вопрос был про значения в List'е.

Вы имели в виду адаптер, что-то типа такого?

func mapIntToStr(accum: List[String], next: Int) = next.toString() :: accum
func mapStrToInt(accum: List[Int], next: String) = next.parseIntValue() :: accum

@Callable(i)
func Test() = {
let arr = [1,2,3]
let arrStr = FOLD<size(arr)>(arr, [], mapIntToStr)
let str = makeString(arr, "|")
let arrStr2 = split(str, "|")
let arrNum = FOLD<size(arrStr2)>(arrStr2, [], mapStrToInt)
([])
}

Читать полностью…

Waves / RIDE dev chat RU

Подскажите, как правильно сохранить в данных контракта массив (List[Int]) чисел?

В документации для 6‑й версии ride нет метода для хранилища которым бы можно было сохранить List[Int], я нашел makeString и split, но они для строк.

Читать полностью…

Waves / RIDE dev chat RU

(это проблема js и сваггера)

Читать полностью…

Waves / RIDE dev chat RU

Да, тут фолд будет самое простое

Читать полностью…

Waves / RIDE dev chat RU

отличный пример, но он про другое мне кажется. Как в конкретной задаче склеить 37 чисел в строку через разделитель и потом обратно разобрать можно ручками сделать проще?

Читать полностью…

Waves / RIDE dev chat RU

FOLD это не цикл, это макрос иммитирующий работу в цикле. Поэтому что ручками самому писать, что FOLDом разницы нет, а FOLDом проще

Читать полностью…

Waves / RIDE dev chat RU

А лучше спроектировать так, чтоб не приходилось использовать циклы вообще, т.е. работать прямо со строкой

Читать полностью…

Waves / RIDE dev chat RU

FOLD завершится обработав ровно переданное количество элементов, он так устроен.

Читать полностью…

Waves / RIDE dev chat RU

Если прейдёт значение 1, то 36 итераций будет пустым, тогда уже лучше выкинуть ошибку, если size != аргумент с размером массива

Читать полностью…

Waves / RIDE dev chat RU

ну как так то? какое-то же огрнаичение сверху должно быть?

Читать полностью…

Waves / RIDE dev chat RU

может быть от 1 до 37

Читать полностью…

Waves / RIDE dev chat RU

Т.е. передать с фронта еще один аргумент с размером? Тогда фронт сможет при reveal манипулировать длинной сохраненного списка.

Логика сейчас такая:

commit
- Сохраняем массив чисел в строку с разделителями и записываем в данные

reveal
- Поучаем строку и переводим в List[String] (назовем Х)
- List[String] через map в FOLD List[Int]

т.е. если в Х 6 значений, а в аргументе reveal прислали 5 - FOLD проигнорирует последнее.

Читать полностью…

Waves / RIDE dev chat RU

У меня эти значения приходят с фронта, может быть разная длинна, просто вынес в Test для явности.

Читать полностью…

Waves / RIDE dev chat RU

Как тогда правильно написать кусочек кода выше?

Читать полностью…

Waves / RIDE dev chat RU

Если да, то тут выходит загвоздка с size, хоть он и отдает Int, FOLD видимо хочет константу и выдает ошибку. В примерах документации также FOLD используется с заранее известными значениями.

Читать полностью…

Waves / RIDE dev chat RU

Вообщем-то все так и делают, преобразовывают числа в строки, а потом соединяют в одну через разделитель. При вычитывании данных, обратное преобразование.
У типа Int есть функция toString(), а к строке можно применить функции parseInt() или parseIntValue().


let i = 10
let s = i.toString()
let ii = s.parseIntValue()

i == ii

Читать полностью…

Waves / RIDE dev chat RU

Спасибо, так вроде стало нормально.

Читать полностью…

Waves / RIDE dev chat RU

Прикольно, toInt() всегда возвращает число, кратное 1000

Читать полностью…
Subscribe to a channel