diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2016-11-21 21:11:43 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2016-11-21 21:11:43 +0800 |
commit | 42a84946d2dca1880082a07d6408f5b88b966f9c (patch) | |
tree | f271aeae4f2df22762b2718df3392c8b257a104c | |
parent | aa48008cc72c6f44db2cbd30a1bee522be67ecd8 (diff) | |
download | dexon-solidity-42a84946d2dca1880082a07d6408f5b88b966f9c.tar.gz dexon-solidity-42a84946d2dca1880082a07d6408f5b88b966f9c.tar.zst dexon-solidity-42a84946d2dca1880082a07d6408f5b88b966f9c.zip |
Fix function type examples
-rw-r--r-- | docs/types.rst | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/docs/types.rst b/docs/types.rst index b22ad7d4..693e2095 100644 --- a/docs/types.rst +++ b/docs/types.rst @@ -314,10 +314,13 @@ followed by the function identifier together in a single ``bytes24`` type. Example that shows how to use internal function types:: + pragma solidity ^0.4.5; + library ArrayUtils { // internal functions can be used in internal library functions because // they will be part of the same code context function map(uint[] memory self, function (uint) returns (uint) f) + internal returns (uint[] memory r) { r = new uint[](self.length); @@ -327,8 +330,9 @@ Example that shows how to use internal function types:: } function reduce( uint[] memory self, - function (uint) returns (uint) f + function (uint x, uint y) returns (uint) f ) + internal returns (uint r) { r = self[0]; @@ -336,7 +340,7 @@ Example that shows how to use internal function types:: r = f(r, self[i]); } } - function range(uint length) returns (uint[] memory r) { + function range(uint length) internal returns (uint[] memory r) { r = new uint[](length); for (uint i = 0; i < r.length; i++) { r[i] = i; @@ -346,7 +350,7 @@ Example that shows how to use internal function types:: contract Pyramid { using ArrayUtils for *; - function pyramid(uint l) return (uint) { + function pyramid(uint l) returns (uint) { return ArrayUtils.range(l).map(square).reduce(sum); } function square(uint x) internal returns (uint) { @@ -359,6 +363,8 @@ Example that shows how to use internal function types:: Another example that uses external function types:: + pragma solidity ^0.4.5; + contract Oracle { struct Request { bytes data; @@ -377,12 +383,12 @@ Another example that uses external function types:: } contract OracleUser { - Oracle constant oracle = 0x1234567; // known contract + Oracle constant oracle = Oracle(0x1234567); // known contract function buySomething() { oracle.query("USD", oracleResponse); } function oracleResponse(bytes response) { - if (msg.sender != oracle) throw; + if (msg.sender != address(oracle)) throw; // Use the data } } |