メソッドのラベル(外部名)の使用について
上記サイトの最後のコードが以下になります。
/* オセロのコマ */
enum Piece {
case Black, White
}
/* オセロ盤 */
class OthelloBoard {
class var rows: Int { return 8 }
class var columns: Int { return 8 }
class var squares: Int { return rows * columns }
var board: [Piece?]
init() {
board = Array(count: OthelloBoard.squares, repeatedValue: nil)
self[3, 3] = .Black; self[3, 4] = .White
self[4, 3] = .White; self[4, 4] = .Black
}
// 指定されたマス目のコマを返す
subscript(row: Int, column: Int) -> Piece? {
get {
checkSquare(row, column: column)
return board[row * OthelloBoard.columns + column]
}
set {
checkSquare(row, column: column)
board[row * OthelloBoard.columns + column] = newValue
}
}
// 位置の検証
func checkSquare(row: Int, column: Int) {
assert(row < OthelloBoard.rows && column < OthelloBoard.columns, "不正な位置")
}
}
let board = OthelloBoard()
board[3, 5] = .Black
このコードの、subscriptのgetとsetの中でcheckSquareメソッドを実行していますが、なぜcolumnにラベル(外部名)が付いているのでしょうか?
checkSquareの定義のところでは、引数名だけでラベルは定義されていません。
しかし、getとsetの中でcheckSquareメソッドの、rowにラベルを付けたり、columnのラベルを外すとエラーがでます。
よろしくお願いします。