Готовый модуль привязки - PullRequest
4 голосов
/ 04 мая 2019

Я новичок в Pact (Kadena.io). Не могли бы вы дать мне простое объяснение того, что делает модуль bind?объяснение в руководстве не совсем понятно для понимания.

Спасибо.

pact-lang

1 Ответ

2 голосов
/ 19 мая 2019

Функция bind принимает объект строки в качестве ввода и позволяет связать имена переменных со значениями, связанными с ключами этого объекта.Например, предположим, у меня есть следующий объект:

{ "foo" : "is"
, "bar" : 1
, "baz" : 3
}

Когда я вызываю bind для этого объекта, я могу связать значения в объекте с именем переменной, которое я указываю, и впоследствии использовать эти переменныев выражениях в рамках привязки.Рассмотрим следующий пример:

(let ((obj { "foo": "is", "bar": 1, "baz": 3 }))
  (bind obj 
    { "foo" := foo
    , "bar" := bar
    , "baz" := baz
    }
    (format "1 + 3 {} {}" [foo (+ bar baz)]))
  )

Это выведет строку «1 + 3 равно 4», связав наши собственные определения имен переменных и используя их в выражении форматирования, которое возвращает строку.Обратите внимание, что мы сделали здесь, хотя.Мы взяли значения, связанные с ключами объекта obj, и связали их с именем переменной, с которой мы можем работать в рамках функции привязки.Это позволяет нам надежно работать с объектами.Он даже поддерживает частичные привязки только к частям объекта!

Итак, ключевой вывод для функции bind:

  • Когда вы работаете с объектами, bind позволяет работать со значениями вОбъект как имена переменных.

  • Символ := - это тот символ, который позволяет связать ключ с именем переменной.Вы можете встретить этот символ с другими функциями, такими как with-read и resume, и он всегда относится к акту привязки значения к какому-либо имени.

  • Вы можете использовать переменные для любых целей, если они не выходят за рамки привязки.

Надеюсь, это прояснит ситуацию.

...