Swift 4:
let timer = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(segueToSignIn), userInfo: nil, repeats: false)
@objc func segueToSignIn() {
self.performSegue(withIdentifier: "SignInSegue", sender: self)
}
Строковая интерполяция Scala
s"Database is ${DBASE} and frequency is ${FREQ}"
по существу является просто причудливым синтаксисом для вызова метода на StringContext
. Он desugars к чему-то вроде
StringContext("Database is ", " and frequency is ", "").s(DBASE, FREQ)
. Хотя вы могли теоретически разбить строку "Database is ${DBASE} and frequency is ${FREQ}"
на куски, подходящие для StringContext
, а затем где-то искать переменные DBASE
и FREQ
кажется, что гораздо легче replaceAll
вхождения $$${DBASE}
и $$${FREQ}
сразу.
StringContext
. Думаю, я буду использовать replaceAll
.
– philantrovert
13 July 2018 в 14:20
Я думаю, что динамически невозможно интерполировать строку, как это происходит во время самого компиляции.
1) Интерполяция строк происходит во время компиляции, поэтому компилятор обычно не имеет достаточной информации для интерполяции s (queryResult). Он ожидает строковый литерал в соответствии с https://docs.scala-lang.org/sips/string-interpolation.html .
2) В разделе «Расширенное использование» в документации , объясняется, что выражение формы id «Hello $ name». переводится во время компиляции в новый StringContext («Hello», «.»). id (name).
Таким образом, вы можете создать что-то вроде
StringContext("Database is ", " and frequency is ", "").s(DBASE, FREQ)
, которое заменит синтаксический suger. Надеюсь, что это поможет.