Code has been added to clipboard!
Solidity Value Types Function Types 4
Example
struct dataRequest {
bytes data;
function(bytes memory) external callback;
}
dataRequest[] dataRequests;
event NewDataRequest(uint);
function dataQuery(bytes data, function(bytes memory) external callback) {
dataRequests.push(dataRequest(data, callback));
NewDataRequest(requests.length - 1);
}
function reply(uint requestID, bytes response) {
// Here goes the check that the reply comes from a trusted source
dataRequests[requestID].callback(response);
}
}
contract OracleUser {
Oracle constant oracleConst = Oracle(0x1234567); // known contract
function buySomething() {
oracleConst.dataQuery("USD", this.oracleResponse);
}
function oracleResponse(bytes response) {
require(msg.sender == address(oracleConst));
// Use the data
}