mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
plain address can be sent Ether too
The docs state that a plain `address` cannot be sent Ether. But even though `send` and `transfer` members are not available for plain `address`, the `call` is. And `call` can be invoked upon a plain `address` type to send Ether to the address.
For instance, the `someone` (`address` type) can be sent Ether by invoking `sendSomeone()` method in the following `Dummy` contract:
```
contract Dummy {
address someone = 0xAb8...cb2;
function balanceOf(address addr) public view returns (uint) {
return addr.balance;
}
function sendToSomeone() public payable returns (bool) {
(bool sent, ) = someone.call{value: msg.value}("");
return sent;
}
}
```
This commit is contained in:
parent
6b8654384c
commit
2e2094ad82
@ -188,7 +188,8 @@ The address type comes in two flavours, which are largely identical:
|
||||
- ``address payable``: Same as ``address``, but with the additional members ``transfer`` and ``send``.
|
||||
|
||||
The idea behind this distinction is that ``address payable`` is an address you can send Ether to,
|
||||
while a plain ``address`` cannot be sent Ether.
|
||||
while you are not supposed to send Ether to a plain ``address``, for example because it might be a smart contract
|
||||
that was not built to accept Ether.
|
||||
|
||||
Type conversions:
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user