它什麼都不做,因爲它是一個接口。接口是定義約束的一種方式,以便您可以與實現它的任何對象進行通信,並知道接口中定義的函數將存在於實現中。這
interface tokenRecipient {
function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);
}
一個例子是一個方式,從一個合同傳達給另一個,看起來像一個收件人
在合同你想傳達給你必須有實現的tokenRecipient的ERC223實現例如
pragma solidity ^0.4.0;
interface tokenRecipient {
function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);
}
contract MyContract is tokenRecipient {
function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) {
// functionality
}
}
所以,如果我們現在實行的合同我知道我們能與具有tokenRecipient實現如任何合約互動
pragma solidity ^0.4.0;
interface tokenRecipient {
function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);
}
contract RemoteContract {
function func(address _addr, uint _value) {
tokenRecipient _tokenRecipient = tokenRecipient(_addr);
_tokenRecipient.receiveApproval(msg.sender, _value, address(this), empty);
}
}
如果調用失敗而這正是我們需要的發生,防止東西,如令牌被送到一個合同,不能用它做任何事情,就會報錯。由於Solidity是原子,如果合約無法接收,它將以事務方式工作,然後它將回滾所有已執行的功能。
您確定這是JavaScript嗎? – tadman
許多語言中的'interface'用於定義協議或對象接口,這是抽象基類的一種替代方法。任何實現該類的類都被假定爲「符合」它,並且它可以作爲一種類型。 – tadman
@tadman這是固體,而不是Javascript。 – WBT