В Swift, есть ли у Int скрытый инициализатор, который принимает строку?
1438 просмотра
1 ответ
Я попытался взглянуть на Swift API для Int, и я все еще не уверен, почему это работает:
var foo = Int("100")
Я вижу следующие инициализаторы в документации:
init()
init(_: Builtin.Word)
init(_: Double)
init(_: Float)
init(_: Int)
init(_: Int16)
init(_: Int32)
init(_: Int64)
init(_: Int8)
init(_: UInt)
init(_: UInt16)
init(_: UInt32)
init(_: UInt64)
init(_: UInt8)
init(_:radix:)
init(_builtinIntegerLiteral:)
init(bigEndian:)
init(bitPattern:)
init(integerLiteral:)
init(littleEndian:)
init(truncatingBitPattern: Int64)
init(truncatingBitPattern: UInt64)
Но я не вижу init(_: String)
выше. Есть ли что-то автоматическое, что происходит под капотом?
Ответы (1)
7 плюса
Решение
Существует
extension Int {
/// Construct from an ASCII representation in the given `radix`.
///
/// If `text` does not match the regular expression
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix`
/// is not representable, the result is `nil`.
public init?(_ text: String, radix: Int = default)
}
метод extension, принимающий строку и необязательный radix (по умолчанию 10):
var foo = Int("100") // Optional(100)
var bar = Int("100", radix: 2) // Optional(4)
var baz = Int("44", radix: 3) // nil
Как можно это найти? Используя «трюк» из «Перейти к определению» для методов без имен внешних параметров , напишите эквивалентный код
var foo = Int.init("100")
// ^^^^
а затем - cmdнажмите init
в Xcode :)
Вопросы из категории :
- swift Как я могу программным образом определить, работает ли мое приложение в симуляторе iphone?
- swift iOS: Convert UTC NSDate to local Timezone
- swift Как установить цель и действие для UIBarButtonItem во время выполнения
- swift Жирный и не жирный текст в одном UILabel?
- swift Найти касательную точки на кубической кривой безье
- swift Как я могу рассчитать разницу между двумя датами?
- swift How to get text / String from nth line of UILabel?
- swift Можно ли программно прокрутить до нужной строки в UIPickerView?
- swift Отключение клавиатуры в UIScrollView
- swift Как контролировать межстрочный интервал в UILabel
- swift Формат UILabel с маркерами?
- swift Как я могу создавать локальные уведомления в iOS?
- swift UILabel с текстом двух разных цветов
- swift Многострочная метка iOS в Интерфейсном конструкторе
- swift Неизвестный пароль UITextField
- swift Delete all keys from a NSUserDefaults dictionary iOS
- swift Скопируйте CGContext в другой CGContext
- swift Как ждать в Objective-C и Swift
- swift Событие изменения текста UITextField
- swift Получить системный том iOS