ぜのぜ

しりとりしようぜのぜのぜのぜ

85日目

日記

数ある家事の中でご飯を炊くのが一番大変かもしれない.何もしないと食べられないし中途半端にやるとまずくなるので.

今日書いたコード

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パラメータに割り当てたときもランタイムエラーになる.

メモリアクセスの周辺は全然土地勘がない.