> On Jan 11, 2018, at 4:20 PM, Ben Cohen <ben_co...@apple.com> wrote: > > > >> On Jan 11, 2018, at 12:32 PM, Michael Ilseman via swift-dev >> <swift-dev@swift.org <mailto:swift-dev@swift.org>> wrote: >> >> For a more general solution, I think a `var numericValue: Int? { get }` on >> Character would make sense. Unicode defines (at least one) semantics for >> this and ICU provides this functionality already. >> > > Minor style point – this should be a failable init on Int rather than a > computed property on Character > > i.e. Int.init?(_: Character), matching Int.init?(_: String, radix: Int = 10), > only it doesn’t need the radix arg cos it’s only a single character. >
`Int.init?` is probably better, yes. If you wanted to take that to its logical conclusion, that would include `Double.init?` for mathematical constants and some `Rational.init` for fraction graphemes. These are pretty far off the deep end ;-) Minor logic point – radix isn't important, but that's not because it’s only a single character but rather because of how Unicode(/ICU) defines character properties. Numbers can be much higher than 9, e.g. 万 is ten-thousand. Even worse is cuneiform, which is sexagesimal (and of course cuneiform is properly encoded in Unicode!). Luckily, Unicode’s numeric values are always presented in base-10, AFAICT. > If implemented inside the std lib, it can still access character’s internals, > which is a reasonable thing to do for something so performance-sensitive. >
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev