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
  }