40. //Associatedtypプロトコル 設定
protocol ProtocolBoard {
associatedtype protocolPiece
static var rows: Int { get }
static var columns: Int { get }
//取得用サブスクリプト
subscript(row: Int, column: Int) -> protocolPiece? { get set }
}
41. //配列設定
struct ArrayBoard<T>: ProtocolBoard {
static var rows: Int { return 7 }
static var columns: Int { return 7 }
// 配列
var board = [T?](repeating: nil, count: 7 * 7)
// 取得用サブスクリプト
subscript(row: Int, column: Int) -> T? {
get {
return board[row * 7 + column]
}
set {
board[row * 7 + column] = newValue
}
}
}