In this example the problem is that the address can be of an account or any other contract which will through an error. To solve this problem ERC-165 contract comes into play.
//SPDX-License-Identifier: No-Idea!
pragma solidity >=0.4.16 <0.9.0;
contract Store {
uint256 internal value;
function setValue(uint256 v) external {
value = v;
}
function getValue() external view returns (uint256) {
return value;
}
}
interface StoreInterface {
function getValue() external view returns (uint256);
}
contract StoreReader {
function readStoreValue(address store)
external view returns (uint256) {
return StoreInterface(store).getValue();
}
}