Double
をカスタム変換でString
に拡張したいと思っていますが、これはクラス/構造体の実装に限定したいと思います。 Double
にちょうど直接ダブルの延長と同じ結果を生成することを適用するDoubleを自分の構造体内で拡張する
protocol DoubleCustomStringConvertable { ... }
:
extension Double {
var customStringOutput: String {
guard self >= 0.0 else { return "Invalid" }
return "My number is: \(self)"
}
}
struct MyStruct {
var myNumber: Double = 100.0
}
let myStruct = MyStruct()
let doubleFail = 99.0
print(myStruct.myNumber.customStringOutput) //"My number is: 100.0"
print(doubleFail.customStringOutput) //"My number is :99.0" - Should fail
のために私は次のようなプロトコルを作成しようとしました。私は構造体の中でdoubleをパラメータとしてとり、という文字列を返します。は私の問題を解決しますが、これは学習の練習のほうが多く、私はプロパティのより洗練された構文が好きです。
私の定義した構造内でDoubleのプロトコルのみを適用できるようにするにはどうすればよいですか?これはおそらくとても簡単なので、私は自分自身をキックするでしょう!
Doubleでプライベートエクステンションを検討しましたか? https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html#//apple_ref/doc/uid/TP40014097-CH41-ID25 – JAL