Ich lerne Solidity und benutze Remix, um zu experimentieren und mein Lernen zu verbessern. Ich versuche gerade, einen einfachen Vertrag zu erstellen, der eine Schnittstelle verwendet.
pragma solidity ^0.4.19;
contract InterfaceWithMe {
function call() returns (string);
}
contract Interfacing {
address ckAddress = 0x9fe1c58215407d67719ba680360940056e5eceb7;
InterfaceWithMe daContract = InterfaceWithMe(ckAddress);
function call() returns (string) {
return daContract.call();
}
Wenn ich versuche, dies auf Remix zu kompilieren, erhalte ich in Zeile 14 den folgenden Typfehler:
TypeError:Rückgabeargumenttyp unzugänglicher dynamischer Typ ist nicht implizit in den erwarteten Typ (Typ der ersten Rückgabevariablen) Stringspeicher konvertierbar.
Hier ist der andere Vertrag, den ich als Schnittstelle zu diesem Vertrag verwende:
pragma solidity ^0.4.19;
contract InterfaceWithMe {
function call() returns (string) {
return "Hello";
}
}
Danke für die Hilfe.
Ein bisschen Fummelei für Lesbarkeit und Stil.
pragma solidity 0.4.25;
contract Interface {
function call() public pure returns (string);
function isInterface() public pure returns(bool);
}
contract Interfacing {
Interface daContract;
constructor(address theContract) public {
daContract = Interface(theContract);
require(daContract.isInterface());
}
function call() public view returns (string) {
return daContract.call();
}
}
contract InterfaceWithMe is Interface {
function call() public pure returns (string) {
return "Hello";
}
function isInterface() public pure returns(bool) {
return true;
}
}
Hier ist es in Remix, um zu zeigen, dass es funktioniert.
InterfaceWithMe
Interfacing
die Übergabe der Adresse aus der Zwischenablage an den Konstruktor bereit.call
Sie `Interfacing.Hello
Ich hoffe es hilft.
Camry is Car
daher muss es alle geerbten Standardfunktionen implementieren. Driver
beginnt Car
so, dass eine Instanz von etwas als Typ umgewandelt Car
und dann mit aufgerufen wird myCar.start ()
. Beachten Sie, dass der Compiler den Quellcode sehen kann, um die Schnittstelle auszuarbeiten.
ssi91