Explorar tipos de valor
Nesta unidade, você aprenderá sobre os tipos de valor principal no Solidity. Os tipos de valor são passados por valor e copiados quando usados. Os tipos de valor primário que você usará ao escrever contratos incluem inteiro, booliano, string literal, endereço e enumeração.
Inteiros
Os inteiros são usados em cada arquivo de origem do Solidity. Eles representam números inteiros e podem ser com ou sem sinal. Intervalo de inteiros no tamanho do armazenamento de 8 bits a 256 bits.
- Assinado: inclui números negativos e positivos. Pode ser representado como int.
- Sem sinal: incluem apenas números positivos. Pode ser representado como uint.
Se um número de bits não for especificado, o valor padrão será de 256 bits.
As seguintes operações podem ser aplicadas a inteiros:
- Comparações:
<=
,<
,==
,!=
,>=
,>
- Operadores de bits:
& (and)
,| (or)
,^ (bitwise exclusive)
,~ (bitwise negation)
- Operadores aritméticos:
+ (addition)
,- (subtraction)
,* (multiplication)
,/ (division)
,% (modulo)
,** (exponential)
Aqui estão alguns exemplos de definições de inteiro:
int32 price = 25; // signed 32 bit integer
uint256 balance = 1000; // unsigned 256 bit integer
balance - price; // 975
2 * price; // 50
price % 2; // 1
Boolianos
Os boolianos são definidos usando a palavra-chave bool. Eles sempre têm um valor de true
ou false
.
Veja como eles podem ser definidos:
bool forSale; //true if an item is for sale
bool purchased; //true if an item has been purchased
Os boolianos são comumente usados em instruções de comparação. Por exemplo:
if(balance > 0 & balance > price) {
return true;
}
if(price > balance) {
return false;
}
Os boolianos também podem ser usados em parâmetros de função e tipos de retorno.
function buy(int price) returns (bool success) {
// ...
}
Literais de cadeia de caracteres
String literals também são usados na maioria dos arquivos de contrato. Eles são caracteres ou palavras entre aspas duplas ou simples.
String shipped = "shipped"; // shipped
String delivered = 'delivered'; // delivered
String newItem = "newItem"; // newItem
Além disso, os seguintes caracteres de escape podem ser usados com string literals.
\<newline>
ignora uma nova linha\n
nova linha\r
retorno de carro\t
tabulação
Endereço
Um endereço é um tipo com um valor de 20 bytes que representa uma conta de usuário do Ethereum. Esse tipo pode ser um address regular ou um address payable.
A diferença entre os dois é que um tipo address payable é um endereço para o qual você pode enviar Ether e que contém os membros adicionais transfer
e send
.
address payable public seller; // account for the seller
address payable public buyer; // account for the user
function transfer(address buyer, uint price) {
buyer.transfer(price); // the transfer member transfers the price of the item
}
Enumerações
No Solidity, você pode usar enumerações para criar um tipo definido pelo usuário. Ele é chamado de definido pelo usuário porque a pessoa que cria o contrato decide quais valores incluir. As enumerações podem ser usadas para apresentar muitas opções selecionáveis, uma das quais é obrigatória.
Uma enumeração pode ser usada, por exemplo, para apresentar status diferentes para um item. Você pode considerar enumerações como a representação de respostas de várias opções em que todos os valores são predefinidos e você precisa selecionar um. Enumerações podem ser declaradas em definições de contrato ou de biblioteca.
enum Status {
Pending,
Shipped,
Delivered
}
Status public status;
constructor() public {
status = Status.Pending;
}