Summary
Once again, this was a dense chapter that focused primarily on the usage of functions along with modifiers and the way they help in writing code that improves overall readability and logic flow. Solidity provides special functions, the fallback and receive functions, within contracts, and they were covered with examples of their usage.
Functions can be constrained using the pure, constant, and view modifiers, which limit the activity possible within a function. State variables and functions can have different visibility scopes such as private, internal, public, and external (although state variables are never external) that constrain their visibility and limits them to only certain types of callers.
The functions related to the address type can be intimidating, especially when you consider their multiple variations and their relationship with the fallback functions. If you are implementing a fallback or receive function, remember to pay special attention to testing them...