Solidity – 枚举和结构

枚举是创建用户定义数据类型的方式,它通常用于为整数常量提供名称,使合约更便于维护和阅读。枚举使用几个预定义值之一来限制变量,枚举列表的这些值称为enums。选项用从零开始的整数值表示,也可以为枚举指定默认值。通过使用枚举,可以减少代码中的错误。

句法:

枚举 <枚举器名称> {
            元素 1, 元素 2,....,元素 n
}

示例:在下面的示例中,合约类型枚举器 week_days组成, 并且定义了函数来设置和获取 枚举器类型的变量的值。

坚固性

// Solidity program to demonstrate
// how to use 'enumerator'
pragma solidity ^0.5.0;

// Creating a contract
contract Types {

	// Creating an enumerator
	enum week_days
	{
	Monday,
	Tuesday,
	Wednesday,
	Thursday,
	Friday,
	Saturday,
	Sunday
	}

	// Declaring variables of
	// type enumerator
	week_days week;
	
	week_days choice;

	// Setting a default value
	week_days constant default_value
	= week_days.Sunday;
	
	// Defining a function to
	// set value of choice
	function set_value() public {
	choice = week_days.Thursday;
	}

	// Defining a function to
	// return value of choice
	function get_choice(
	) public view returns (week_days) {
	return choice;
	}
	
	// Defining function to
	// return default value
	function getdefaultvalue(
	) public pure returns(week_days) {
		return default_value;
	}
}

输出 : 

结构

Solidity 中的结构允许您创建具有多个属性的更复杂的数据类型。您可以通过创建struct来定义自己的类型。

它们对于将相关数据分组在一起很有用。

结构可以在合同之外声明并在另一个合同中导入。一般用它来表示一条记录。使用结构关键字 来定义结构,它创建了一个新的数据类型。

句法:

结构 <结构名称> {  
   <数据类型> 变量_1;  
   <数据类型> 变量_2;
}

为了访问结构的任何元素,使用“点运算符”,它将结构变量和我们希望访问的元素分开。定义结构数据类型的变量使用结构名称。

示例:在下面的示例中,合约 Test一个结构Book 组成,并且定义了函数来设置和获取结构元素的值。

坚固性

// Solidity program to demonstrate
// how to use 'structures'
pragma solidity ^0.5.0;

// Creating a contract
contract test {

// Declaring a structure
struct Book {
	string name;
	string writter;
	uint id;
	bool available;
}

// Declaring a structure object
Book book1;

// Assigning values to the fields
// for the structure object book2
Book book2
	= Book("Building Ethereum DApps",
			"Roberto Infante ",
			2, false);

// Defining a function to set values
// for the fields for structure book1
function set_book_detail() public {
	book1 = Book("Introducing Ethereum and Solidity",
				"Chris Dannen",
					1, true);
}


// Defining function to print
// book2 details
function book_info(
)public view returns (
	string memory, string memory, uint, bool) {
		
		return(book2.name, book2.writter,
			book2.id, book2.available);
	}
	
// Defining function to print
// book1 details
function get_details(
) public view returns (string memory, uint) {
	return (book1.name, book1.id);
}
}

输出 : 
 

猜你喜欢

转载自blog.csdn.net/m0_73054711/article/details/126238489