Solidity
代理的常量可以從它的實現合約中訪問嗎?
我試圖了解這是否可能:
contract Proxy { constant string greeting = "hello world"; fallback(){ // delegates to ImplementationForProxy } }
contract ImplementationForProxy { function sayHello(){ // Compiler doesn't know what "greeting" is // but is there a different way of accessing it? return greeting; } }
小笨蛋:聲明常量的正確方法是
string constant greeting
:)關於這個問題:簡短的回答是否定的。常量在編譯時進行優化,並作為程式碼的一部分儲存。該實現與代理共享儲存,但它們具有不同的程式碼。
如果您想與代理共享一個常量,您可以創建一個
Constants.sol
包含以下內容的文件,並將其導入到代理和實現的文件中。常量.sol 文件:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; string constant greeting = "hello world";