ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
エラー内容
error: missing argument label 'name:' in call
let user = User("Alice", 25)
^
name:
error: missing argument label 'count:' in call
showItems(10)
^
count:
原因
Swift は引数ラベル(argument label)を呼び出し側で明示することを要求します。これは「自然な英語のような読みやすさ」を実現する仕様で、Objective-C の文化を引き継いだ Swift の特徴です。
// 関数定義
func showItems(count: Int) {
print("count: \(count)")
}
// ❌ NG: ラベル無しで呼ぶ
showItems(10)
// error: missing argument label 'count:' in call
// ✅ OK: ラベル付きで呼ぶ
showItems(count: 10)
対処1: 呼び出し時にラベルを付ける
関数定義は変えず、呼び出し側でラベルを明記:
struct User {
let name: String
let age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
// ✅ ラベル明記で呼ぶ
let alice = User(name: "Alice", age: 25)
// 関数も同様
func greet(person: String, message: String) {
print("\(message), \(person)!")
}
greet(person: "Alice", message: "Hello")
対処2: 定義側でラベルを省略可能に
呼び出し側でラベルを書きたくない場合、関数定義で アンダースコア _ を付けると省略可能になります:
// 定義側で _ を付ける
func showItems(_ count: Int) {
print("count: \(count)")
}
// ラベル無しで呼べる
showItems(10)
// イニシャライザも同様
struct User {
let name: String
init(_ name: String) {
self.name = name
}
}
let bob = User("Bob") // ラベル不要
外部ラベル と 内部パラメータ名
Swift は引数に「外部名(呼び出し時の名前)」と「内部名(関数本体内で使う名前)」を分けて指定できます:
// 構文: func name(外部ラベル 内部パラメータ名: 型)
func greet(to person: String, with message: String) {
print("\(message) to \(person)")
// ↑ ここでは person, message を使う(内部名)
}
// 呼び出し側は外部ラベルを使う
greet(to: "Alice", with: "Hello")
// 自然な英語っぽく読める
// "greet to Alice with Hello"
// 外部ラベルだけ無くす
func greet(_ person: String, message: String) {
// person は内部でも外部でも同名
}
greet("Alice", message: "Hello")
典型的な使い分け
| シーン | 定義 | 呼び出し |
|---|---|---|
| 1 引数で自明 | func print(_ value: Any) | print("foo") |
| 意味を明示したい | func setAge(to age: Int) | setAge(to: 30) |
| イニシャライザ | init(name: String, age: Int) | User(name: "A", age: 1) |
| 動詞 + 補語 | func add(_ item: Item, to list: [Item]) | add(item, to: list) |
標準ライブラリの実例
// Array の append(_:contentsOf:) - 第 1 引数は省略、第 2 引数は明示
var arr = [1, 2, 3]
arr.append(4) // _: で省略可
arr.append(contentsOf: [5, 6]) // contentsOf: で明示
// String の hasPrefix(_:) - 第 1 引数省略
"hello".hasPrefix("he")
// String の replacingOccurrences(of:with:)
"hello world".replacingOccurrences(of: "world", with: "Swift")
// Dictionary の subscript
let dict = ["a": 1, "b": 2]
let v = dict["a"] // ラベルなし添字
関数オーバーロード でラベルが活きる
Swift は引数ラベルが違えば同名関数を複数定義できます:
func search(name: String) -> User? { ... }
func search(email: String) -> User? { ... }
func search(id: Int) -> User? { ... }
// 呼び出し側でどれを呼ぶか明示的
let u1 = search(name: "Alice")
let u2 = search(email: "alice@example.com")
let u3 = search(id: 42)
クロージャでも同じ
// 関数型は呼び出し時にラベル不要
let action: (String, Int) -> Void = { name, age in
print("\(name), \(age)")
}
action("Alice", 25) // ラベル無し
// クロージャを引数に取る関数
func process(callback: (String) -> Void) {
callback("Hello")
}
process(callback: { msg in
print(msg)
})
// trailing closure(末尾クロージャ)構文
process { msg in
print(msg)
}
関連エラー
- "extraneous argument label 'xxx:' in call": 不要なラベルを付けた逆のケース
- "argument 'xxx' must precede argument 'yyy'": 引数順序違反
- "cannot find 'xxx' in scope": 関数名 / 変数名のスコープ違い
- "missing argument for parameter 'xxx' in call": 必須引数の省略
Swift Style Guide のベストプラクティス
- 第 1 引数で文脈が明確なら
_で省略(append,print等) - 第 2 引数以降は意味を明示するラベルを使う
- 動詞 + 前置詞の構造で自然に読めるラベルを選ぶ(
add(_:to:),move(from:to:)) - イニシャライザはプロパティ名と同じラベルがデフォルト
- 「ラベル省略 vs ラベル必須」の判断は呼び出し側の読みやすさを最優先
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?