我是 Solidity 的新手,我有一个关于多重继承的问题。
因此,如果我有一些合同,例如:
contract A {
function foo() public virtual {
console.log("A");
}
}
contract B is A {
function foo() public virtual override {
console.log("B");
}
}
contract C is A, B {
function foo() public override(A, B) {
super.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
合约C的功能foo必须是override(A, B)insdeadoverride(B)
或者它会抛出一个错误,比如Function needs to specify overridden contract "A".
那么问题来了,该函数必须指定完整的继承父级。
为什么它不能知道信息contract C is A, B,
我的意思是,有什么意义?该overrider(A,B)部分是不必要的。
还是有什么我不知道的技巧?
请给我一个答案,我很好奇,无法通过文档找到一些有用的信息。
我最近在用 Lua 编程,厌倦了编写一些代码,比如
if variable ~= nil then
variable.function()
end
Run Code Online (Sandbox Code Playgroud)
我知道在 C# 或 Swift 中,我们可以做类似的事情
variable?.function()
Run Code Online (Sandbox Code Playgroud)
Lua 有一些方法来实现这种功能吗?