Я ищу для реализации некоторых простых шаблонов строк в Swift, и мне интересно, какие встроенные параметры для замены макросов в строке со значениями во время выполнения.Быстрая интерполяция строк во время выполнения
Было бы замечательно, если бы у меня был способ использовать синтаксис интерполяции строк "\(variable)"
во время выполнения, но я предполагаю, что они фактически разбираются во время компиляции, поскольку макросы могут содержать фактический код.
Я также нашел String
конструктор, который принимает строку формата в стиле Objective-C, используя% @ и т.д.
let myString = String(format: "Hello %@", name)
Это может работать, хотя мне нравится синтаксис меньше. Мне просто интересно, есть ли лучшие подходы, которые я должен предпринять, или было бы лучше просто написать мою собственную.
Возможность выполнения команд (например, операторов или вызовов метода/свойств) внутри макроса была бы удивительной, но не обязательной (и учитывая, насколько статический язык Swift не ожидается).
Я не уверен, что следую тому, что вы хотите сделать (не могли бы вы привести пример использования в псевдо-экономном коде?). Возможно, вы можете использовать интроспекцию времени выполнения ('Mirror (reflecting: ...)') и подклассифицировать 'NSObject' для доступа к' self.valueForKey () ... 'и' self.setValue (, forKey: )) ', чтобы создать некоторую (небезопасную) вещь. Но, возможно, я не понимаю, чего вы хотите достичь. –
dfri
Да, это, вероятно, то, что я в конечном итоге сделаю, если я откажу свой синтаксис замены строки. Мне просто интересно, была ли какая-то достойная поддержка для этого встроенного. Примером может быть что-то вроде «Hello there, \ (firstName)!» И возможность разрешить это во время выполнения (очевидно, с некоторым контекстом набора), а не время компиляции. – devios1