Solidity
solidity 介面 - 呼叫未實現函式的合約
我是 Solidity 和 OOP 的新手。我試圖理解這個簡單的彩票遊戲範例中的程式碼:
https://github.com/alphachainio/chainlink-lottery/blob/master/ethereum/contracts/
governance.randomness()
當他們在 Lottery.sol 的第 57 行呼叫時,我感到很困惑。但我沒有看到該randomness()
功能在任何契約文件中的任何地方實現。下面的答案解釋了未實現的功能將在提供的合約中實現
CEth cToken = CEth(_cEtherContract);
https://stackoverflow.com/a/64734548/4488843
但在 GitHub 彩票範例中,我看到該函式在任何合約(lottery.sol、randomness.sol 和Governance.sol)中都沒有聲明。
該函式是在呼叫治理合約的
init()
函式並設置randomness
狀態變數時啟動的嗎?還是我在程式碼中遺漏了什麼?
對於您的
randomness
範例,重要的是要知道 Solidity 為所有公共變數生成 getter。在governance
合約中有一個公共變數randomness
,它生成上述函式作為 getter:https ://github.com/alphachainio/chainlink-lottery/blob/master/ethereum/contracts/Governance.sol#L6 。一般來說,Solidity 在將合約轉換為特定介面時不會執行任何檢查。可以在此處找到更多資訊:如何初始化介面?(還有很多其他問題也解釋了這一點;))