No.
The function LifeGame.gif!(board, niters; ...) in my example contains the for loop updating niters times the global variables initialized by boardrandom = LifeGame.randboard() and board5x5 = LifeGame.fivexfive() outside the module LifeGame and plotting each step to gif animations.
In the module LifeGame:
Outside the module LifeGame:
LifeGame.update!(board, niters) is not used in the example, but can update a LifeGame.Board type variable without plotting.
In the module LifeGame:
The array tmp, which is used as a temporary workspace, is created by the constructor of LifeGame.Board objects.
Example of LifeGame.update!: Glider
Updating a global variable with a for loop can be done by passing it as an argument to a function containing a for loop.
state = Int8[
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 1 0 0 0 0
1 0 1 0 0 0 0
0 0 1 0 0 0 0
]
board = LifeGame.Board(state)
board.state
7×7 Matrix{Int8}:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 1 0 0 0 0
1 0 1 0 0 0 0
0 0 1 0 0 0 0
↓
↓ update the global variable board 12 times
↓ by the for loop in the function LifeGame.update!
↓
LifeGame.update!(board, 12)
board.state
7×7 Matrix{Int8}:
0 0 0 0 0 0 0
0 0 0 0 1 1 0
0 0 0 1 0 1 0
0 0 0 0 0 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
↓
↓ update and animate the global variable board
↓
LifeGame.gif!(board, 27; gifname="lifeglider.gif", fps=5)

Have fun!
Jupyter notebook: https://github.com/genkuroki/public/blob/main/0014/Game%20of%20Life.ipynb