日記
数ある家事の中でご飯を炊くのが一番大変かもしれない.何もしないと食べられないし中途半端にやるとまずくなるので.
今日書いたコード
var stepSize = 1 func increment(_ number: inout Int) { number += stepSize } increment(&stepSize) // error func balance(_ x: inout Int, _ y: inout Int) { let sum = x + y x = sum / 2 y = sum - x } var playerOneScore = 42 var playerTwoScore = 30 balance(&playerOneScore, &playerTwoScore) balance(&playerOneScore, &playerOneScore) // error
感想
関数は,渡されたすべてのin-outパラメータへのwriteアクセスを保持しているのでその関数の中でオリジナルの変数にアクセスするとコンフリクトが起きてランタイムエラーになる.同様に一つの変数を同じ関数の複数のin-outパラメータに割り当てたときもランタイムエラーになる.
メモリアクセスの周辺は全然土地勘がない.