let _ = ...
を使用しても何の目的もありませんか?"let _ = ..."(アンダースコアは等しくなります)はSwiftで使用できますか?
私はWhat's the _ underscore representative of in Swift References?の質問と回答を見ており、アンダースコアはcan be used to represent a variable that isn't neededです。私は上記のリンクからの例のようにタプルの一つの値を必要な場合、これは理にかなって
:
do {
let _ = try DB.run(table.create(ifNotExists: true) {t in
t.column(teamId, primaryKey: true)
t.column(city)
t.column(nickName)
t.column(abbreviation)
})
} catch _ {
// Error throw if table already exists
}
Iドン:しかし
let (result, _) = someFunctionThatReturnsATuple()
は、私は最近this codeに出くわしましたlet _ =
を削除しただけでコンパイラの警告やエラーが出ない。これは、これがよりシンプルで読みやすいように思えます。
try DB.run(table.create(ifNotExists: true) {t in
t.column(teamId, primaryKey: true)
t.column(city)
t.column(nickName)
t.column(abbreviation)
})
コードの作成者はa book and a blog about Swiftです。私は著者が間違いがないことを知っていますが、私には何かがないか不思議に思っていました。この方法は、developer documentationからwarn_unused_result
でマークされている場合は、コンパイラの警告が表示されます
未使用の結果についてのコンパイラの警告を避けるために、「_」への代入が必要な場合の例を次に示します。http:// stackoverflow。 com/a/32788209/1187415 –
要するに、 'let _ ='はプログラマがメソッド呼び出しの結果を無視したいことを明示的に明確にします。 – Sulthan
'let'は' _'に代入するときはオプションのようです。ブログの作者はそれを両方の方法で行います。 – vacawama