[解決済み] Swiftのリファレンスで_のアンダースコアは何を表しているのですか?
質問
Appleのドキュメントのリファレンスセクションには、この種の事例がたくさんあります。
<ブロッククオート
func runAction(_
action
: SKAction!)
Objective-Cの「同等品」は。
- (void)runAction:(SKAction *)
action
Swiftのリファレンスでは)アンダースコアの後にスペースがあり、"action"がイタリック体で書かれていることが重要なのだろうと思います。
しかし、これが何を伝えようとしているのかがわからない。そこで質問なのですが、リファレンスで使われている規約のリファレンスはあるのでしょうか?
--アンダースコアの使用について、今回参考にしたページはこちらです。 https://developer.apple.com/documentation/spritekit/sknode#//apple_ref/occ/instm/SKNode/runAction
更新情報
Swift 3 は、関数/メソッドのパラメータ名と引数ラベルがどのように使用され、命名されるかにいくつかの変更を加えました。これは、この質問とその答えに影響を及ぼします。Ricksterは、この問題の多くをクリアする関数の_アンダースコアについての別の質問に答えるための素晴らしい仕事をしています、ここで。 なぜswiftにアンダースコアが必要なのですか?
どのように解決するのですか?
どちらの回答も正しいのですが、もう少しはっきりさせたいと思います。
_
が使われているのは
メソッドの外部パラメータ名の動作を変更する
.
で メソッドのローカルパラメータ名と外部パラメータ名 のセクションに書かれています。
Swiftは、最初のパラメータ名を メソッド はデフォルトでローカルパラメータ名となり、2 番目以降のパラメータ名には ローカルと外部両方のパラメータ名 をデフォルトで使用します。
一方、関数はデフォルトで外部パラメーター名を持ちません。
例えば、次のようなものがあります。
foo()
クラスで定義されたメソッド
Bar
:
class Bar{
func foo(s1: String, s2: String) -> String {
return s1 + s2;
}
}
を呼び出すと
foo()
のように呼び出されます。
bar.foo("Hello", s2: "World")
.
しかし
を使用すると、この動作を上書きすることができます。
_
の前にある
s2
と宣言されているところです。
func foo(s1: String, _ s2: String) -> String{
return s1 + s2;
}
そして
foo
のように、単純に呼び出すことができます。
bar.foo("Hello", "World")
のように、2つ目のパラメータを除いた名前になります。
あなたのケースに戻ります。
runAction
という型に関連付けられているので、メソッドです。
SKNode
明らかに したがって
_
パラメータの前に
action
を呼び出すことができます。
runAction
を外部名なしで使用することができます。
Swift 2.0に対応したアップデート
関数とメソッドが動作するようになりました 同じように は、ローカルおよび外部引数名の宣言という点で
関数は、デフォルトで第2パラメータから外部パラメータ名を使用して呼び出されるようになりました。このルールは、純粋なSwiftコードにのみ適用されます。
そのため
_
の前にある
機能
を使用すると、呼び出し側は外部パラメータ名を指定する必要がなくなります。
メソッド
.
関連
-
[解決済み] dispatch_after - GCD in Swift?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] JavaScriptの配列宣言で「Array()」と「[]」はどう違うのですか?
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み】キーボードを簡単に解除する方法は?
-
[解決済み】新しい自動リファレンスカウント機構はどのように機能するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] C言語:拡張子「.mm」は何の略ですか?
-
[解決済み] 警告 : フォーマット文字列は文字列リテラルではありません (安全でない可能性があります)
-
[解決済み] なぜswiftではアンダースコアが必要なのですか?
-
[解決済み] synthesize vs @dynamic、その違いとは?
-
[解決済み] ブロック(__block)」というキーワードはどういう意味ですか?
-
[解決済み] Objective-CでNSArrayを逆引きするにはどうしたらいいですか?
-
[解決済み】NSArrayをアルファベット順に並べるには?
-
[解決済み】Cocoaでスタックトレースをコンソール/ログに出力するにはどうすればいいですか?
-
[解決済み】idの代わりにinstancetypeを使い始めるのは有益でしょうか?
-
[解決済み] registerForRemoteNotificationTypes: は iOS 8.0 以降でサポートされていません。