Пробовал библиотеки в первый раз, имел очень плохой опыт с ними. Мне нужна помощь, чтобы заставить мои контракты работать между библиотеками.
Библиотека 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;
}
}
Файл, который работает с ним, я не знаю, как вы его называете, вторая библиотека?
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);
}
}
Библиотека IntExtended
не работает, однако контракт, ссылающийся на IntExtended, работает.
У вас нет определенного uint в вашем хранилище для использования библиотеки, также ваши библиотечные функции могут быть чистыми.
нижеusing IntExtended for uint
добавлять
uint myUint
а затем вы можете вызывать библиотечные функции, например
myUint.increment()
или_base.increment()
Изменить: закрутить это в ремиксе
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"
}
пользователь19510
return IntExtended.increment(_base)
должно бытьreturn _base.increment()
, да? И что вы имеете в виду под последней фразой? Что именно работает, а что нет? (И что конкретно это означает для того, что не работает? Вы получаете ошибку? Неверный результат?)Дуриан Джейкин
пользователь19510
пользователь19510
Дуриан Джейкин