Probé bibliotecas por primera vez, tuve una muy mala experiencia con ellas. Necesito ayuda para que mis contratos funcionen entre bibliotecas.
Biblioteca 1:
pragma solidity ^0.4.0;
library IntExtended{
function increment(uint _self) returns (uint){
return _self+1;
}
function decrement(uint _self) returns(uint){
return _self-1;
}
function incrementByValue(uint _self,uint _value) returns (uint){
return _self + _value;
}
function decrementByValue(uint _self,uint _value) returns (uint){
return _self -_value;
}
}
Archivo que funciona con él, no sé cómo lo llamas, ¿segunda biblioteca?
pragma solidity ^0.4.0;
import "browser/Library.sol";
contract TestLibrary{
using IntExtended for uint;
function testIncrement(uint _base) returns (uint){
return IntExtended.increment(_base);
}
function testDecrement(uint _base) returns (uint){
return IntExtended.decrement(_base);
}
function testIncrementByValue(uint _base,uint _value) returns(uint){
return _base.incrementByValue(_value);
}
function testDecrementByValue(uint _base, uint _value) returns (uint){
return _base.decrementByValue(_value);
}
}
La biblioteca IntExtended
no está funcionando, sin embargo, el contrato que hace referencia a IntExtended está funcionando.
No tiene un punto definido en su almacenamiento para usar la biblioteca, también las funciones de su biblioteca pueden ser puras.
abajousing IntExtended for uint
agregar
uint myUint
y luego puede llamar a las funciones de la biblioteca como
myUint.increment()
o_base.increment()
Editar: girarlo en remix
pragma solidity ^0.4.0;
library IntExtended{
function increment(uint _self) returns (uint){
return _self+1;
}
}
contract TestLibrary{
using IntExtended for uint;
function testIncrement(uint _base) returns (uint){
return _base.increment();
}
}
0x1 Transaction mined and execution succeed
decoded input {
"uint256 _base": "5"
}
decoded output {
"0": "uint256: 6"
}
usuario19510
return IntExtended.increment(_base)
debería serreturn _base.increment()
, ¿verdad? ¿Y qué quieres decir con tu última frase? ¿Qué funciona exactamente y qué no? (Y para las cosas que no funcionan, ¿qué significa eso exactamente? ¿Obtiene un error? ¿Un resultado incorrecto?)Durián Jaykin
usuario19510
usuario19510
Durián Jaykin