12803


[Swift言語を学ぶ](http://tea-
leaves.jp/swift/content/%E3%82%B5%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88)

上記サイトの最後のコードが以下になります。

[code]

    /* オセロのコマ */
    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
    
[/code]

このコードの、subscriptのgetとsetの中でcheckSquareメソッドを実行していますが、なぜcolumnにラベル（外部名）が付いているのでしょうか？

checkSquareの定義のところでは、引数名だけでラベルは定義されていません。

しかし、getとsetの中でcheckSquareメソッドの、rowにラベルを付けたり、columnのラベルを外すとエラーがでます。

よろしくお願いします。


CC BY-SA 3.0
2015-07-29T01:09:34.450
12781
2015-08-01T16:06:15.260
2015-07-29T02:17:00.570
7362
question
swift
メソッドのラベル（外部名）の使用について


Swift は新しい言語ですが、OS X / iOS プラットフォームでこれまで使われていた Objective-C
からの移行をしやすくするための仕様も含まれています。

メソッドの構文は関数の構文と同じなのですが、第一引数の外部名はデフォルトでは付けることができず、第二引数の外部名には、暗黙的に内部名が使われます。

これには、Swift のメソッド名に当たる部分に第一引数のラベル部分が含まれ、第二引数以降のラベルを（普通は）省略しない、という Objective-C
のメソッド名の特徴が引き継がれています。

挙げていただいたウェブサイトにも詳しく書かれているようですので、参考にしてみてください：  
[メソッド | Swift言語を学ぶ](http://tea-
leaves.jp/swift/content/%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89)


CC BY-SA 3.0
2015-07-29T10:20:40.293
12803
2015-08-01T16:06:15.260
2015-08-01T16:06:15.260
49
2299
12781
answer