When a method can be payable and thenis payable, it's possible to send ether to the contract while calling it, and the function can check the ammountamount sent through msg.valuemsg.value.
How can I make a function receive something elseother than ether, for examplesuch as an ERC20 token?