# 示例
-- Hello, this is a example contract
-- 这里是定义合约的storage的类型
type Storage = {
name: string,
age: int,
money: number,
is_man: bool,
int_table: Map<int>,
int_array: Array<int>
}
-- 声明一个合约类型的变量M
let M = Contract<Storage>()
-- 给合约定义一个初始化函数,这里M代表合约的变量
function M:init()
pprint('contract demo init')
self.storage['name'] = 'zhangsan' -- 这里是给合约的storage各属性进行初始化操作,下面代码类似
self.storage['age'] = 16
self.storage['money'] = 1.1345
self.storage['is_man'] = true
self.storage['int_table'] = {a: 1,b: 2, c: 3,d: 4}
self.storage['int_array'] = [5,6,7,8]
end
-- 给合约定义一个名为set的API,参数是名为name的字符串类型的参数
function M:set(name: string)
pprint('contract demo set')
self.storage['name'] = 'lisi'
self.storage['age'] = 14
self.storage['money'] = 5.3456
self.storage['is_man'] = false
self.storage['int_table'].a = 15
self.storage['int_table'].f = 10
table.remove(self.storage['int_array'], 1)
pprint('after remove')
self.storage['int_array'][1] = 99
pprint('after set array by index')
pprint(self.storage.int_array)
self.storage.int_array[#self.storage.int_array+1] = 20
table.insert(self.storage['int_array'], 19)
pprint('insert value to array')
-- 执行从合约账户转账到用户账户的操作
transfer_from_contract_to_address(user_address_here, get_system_asset_symbol(), 10000)
end
function M:get(arg: string)
pprint('test3 contract demo get')
pprint(self.storage['name']) -- 这里是读取合约的storage中属性为name的值并输出
pprint(self.storage['age'])
pprint(self.storage['money'])
pprint(self.storage['is_man'])
pprint(self.storage['int_table'])
pprint(self.storage['int_array'])
end
return M