Data within a smart contract’s data-space is stored within maps.
maps associate a pair of two values (a, b) (also known as a tuple) to another tuple. It works similarly to a name-value pair.
To get or set a value in a map you use:
(map-get map-name key-tuple) – This fetches the value associated with a given key in the map, or returns none if there is no such value.(map-set! map-name key-tuple value-tuple) – This will set the value of key-tuple in the data map.(map-insert! map-name key-tuple value-tuple) – This will set the value of key-tuple in the data map if and only if an entry does not already exist.(map-delete! map-name key-tuple) – This will delete key-tuple from the data map.A smart contract defines the data schema of a data map through define-map.
Clarity is a strongly-typed language. Its type system has the following types:
(tuple (key-name-0 key-type-0) (key-name-1 key-type-1) ...) – a typed tuple with named fields.(list max-len entry-type) – a list of maximum length max-len, with entries of type entry-type.(response ok-type err-type) – used by public functions to commit their changes or abort.(optional some-type) – an option type for objects that can either be (some value) or none.principal – object representing a principal. A principal represents the address on the blockchain. There are two types of principals: standard principal (has private key) and contract principal (points to a smart contract).bool – boolean value (true or false)int – signed 128-bit integeruint – unsigned 128-bit integer