[Ethereum] new keyword instentiate in solidity and how can use it

solidity

I try to understand variable scope in solidity
But what that mean in this example
new keyword instentiate to a contract
Whtat concept use in this logic
can someone explain me

pragma solidity ^0.5.0;
contract C {
  uint public data = 30;
  uint internal iData= 10;
  
  function x() public returns (uint) {
     data = 3; // internal access
     return data;
  }
}
contract Caller {
  C c = new C();
  function f() public view returns (uint) {
     return c.data(); //external access
  }
}
contract D is C {
  function y() public returns (uint) {
     iData = 3; // internal access
     return iData;
  }
  function getResult() public view returns(uint){
     uint a = 1; // local variable
     uint b = 2;
     uint result = a + b;
     return storedData; //access the state variable
  }
}

I mean this part of code
I not understand why they use this example to explain beginner level variable scope
I also finding the use of new keyword in solidity ,not found

contract Caller {
  C c = new C();
  function f() public view returns (uint) {
     return c.data(); //external access
  }
}

Thanks you

Best Answer

The new keyword creates a new smart contract (in this case using the contract C code for that contract).

The new contract will have an address (c can be cast to an address) and other external accounts (EOAs) or contracts can interact with it at this address.

In terms of scoping, there is nothing special going on here. c is declared in the contract storage of Caller, so can be referenced in any non-pure function in Caller.

There is some more info at:

https://www.oreilly.com/library/view/solidity-programming-essentials/9781788831383/23e0e5a6-db05-4f9f-9260-8e4ac442ccee.xhtml

https://docs.soliditylang.org/en/v0.8.9/control-structures.html?highlight=new%20keyword#creating-contracts-via-new

Related Topic