Swift 2.2では、#if swift(>=x.y)
バージョンビルド構成as proposed in SE-0020 of Swift evolutionを使用できるようになりました。Swift 2.2:#if swift(> = x.y)バージョンビルド設定:サブバージョンの確認に使用できますか? (Swift 2.1と2.1.1の区別)
#if swift(>=2.2)
print("Active!")
#else
this! code! will! not! parse! or! produce! diagnostics!
#endif
私は(XCodeの7.1ベータ2からスウィフト2.1
を介さずに言う>=2.1.1
)1つの段階低いsubversionのレベルの比較でこれを使用しようとするために、好奇心のうちを試してみましたが、私自身の試みドン」しましたtは実際に動作:
>=x.y.z
は数値リテラルの期待という名前のメンバー、エラーを生成します
y = 11
と>=x.y
自然にコンパイルし、2.11
、私たちが見てまだいるバージョンとしてではなく渡します。
XCode 7.3 release notesではこれ以上の詳細情報はありません。
質問:シングル.y
転覆に限られ、この新しいバージョンのビルド構成がされており、またはこれを回避するために、いくつかのトリックがありますか?
あなたのリンクからは... "今のところ、構文の変更によって+0.1.1の改訂版になることはないので、最大2つのバージョンコンポーネントしか期待できません。 2つのバージョンコンポーネントだけが回答です – user3441734
@ user3441734 jeez、私は完全にそれを逃した、ありがとう! (回答として自由に追加してください) – dfri
@ user3441734私はまた、[Swift evolution threadからのこの投稿]を発見しました(https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/ 003455.html)、Douglas Gregorは "#if swift(> = ....)シグネチャで浮動小数点リテラルを使用することによる許容可能な副作用として、バージョン番号の2つのレベルで十分であるはずです" (例えば、文字列 "2.1.1"というよりむしろ)。だから、2つのバージョンコンポーネントの制限はアクティブな選択(効果)ではなく、利便性の1つです。文字列リテラルではなく浮動小数点リテラルを比較します。 – dfri