への結合:条件付きでは、私はこのコードのパターンを改善する方法を探しています既存のプロパティ
struct Struct {
let i: Int
init?(i: Int?) {
guard let unwrappedI = i else { return nil }
self.i = unwrappedI
}
}
unwrappedI
一時変数を削除するにはいいと思います。助言がありますか?
への結合:条件付きでは、私はこのコードのパターンを改善する方法を探しています既存のプロパティ
struct Struct {
let i: Int
init?(i: Int?) {
guard let unwrappedI = i else { return nil }
self.i = unwrappedI
}
}
unwrappedI
一時変数を削除するにはいいと思います。助言がありますか?
私は確信していましたが、これは...私は寝る必要があります。
struct Struct {
let i: Int
init?(i: Int?) {
if let i = i { self.i = i }
else { return nil }
}
}
私が言っているだろう:
struct Struct {
let i: Int
init?(i: Int?) {
if i == nil {return nil}
self.i = i!
}
}
私はそれが早期に終了するには、あなたの最初の欲求をキャプチャし、あなたがいない中間変数を、避けるためにしようとしていたif/else
を避けると思います。 i
をアンラップするには、単にアンラップしてください! if let
またはguard let
のいずれか、またはその派手なものの必要はありません。
(一方、私が聞いている?:初期化子にnil
を渡すと失敗とみなされた場合、なぜ最初の場所でオプションを受け入れるために提供)
実際のアプリケーションがそれよりも複雑です、実際にはオプションのローカル変数で、最終的にはアンラップする必要があります。そのオプション性は、イニシャライザにのみ隔離されています – Alexander
私はそのように思っていました。 :) – matt
実際には、私がここにいる間に、自分のデザインが完全にゴミではないことを確認することもあります。私は、[RIFFファイル](http://www.johnloomis.org/cpe102/asgn/asgn1/riff.html)からデータの「チャンク(chunk)」を解析しようとしています(コンテナ形式で、 wav'、 'ani'の使い方)。有効なファイルには、特定のチャンクセットが必要ですが、任意の順序で指定できます。したがって、これらの変数は作成中はオプションですが、最終的にチェックされ、新しくinitされた構造体の非オプションのプロパティに割り当てられます。 – Alexander