我们能否将Enum值转换为string?在气体、ENums或CONST方面,哪一种使用更有效?
发布于 2018-08-30 17:18:52
在遮罩下,枚举是整数--而不是字符串。编译器会根据选项的数量自动选择最小的可能整数值,因此这几乎总是以较少的空间计算出来,特别是当您的值很长时。
在您的智能契约中,Solidity将自动为您处理将名称转换为ints的问题。如果您声明一个枚举,如:
enum Colors {Red, Orange, Yellow, Green, Blue, Purple}
然后,在契约的其他地方,您可以引用Colors.Red,而不必担心它实际上是内存中的0。您可以在枚举中有256个选项,它仍将作为一个uint8存储,而为每个选项创建一个string (最小为32字节的分配动态字节数组 )。妙语:在你的智能合同中使用枚举。
如果您正在编写使用web3与合同对话的前端应用程序,只需在JS中创建一个映射对象即可。类似于:
const colorEnum = { 0 : 'red', 1 : 'orange', 2 : 'yellow', 3 : 'green', 4 : 'blue', 5 : 'purple' }
https://ethereum.stackexchange.com/questions/57775
复制相似问题