Ich bekomme einen seltsamen Fehler mit dem folgenden Code.Seltsame Fehler mit String-Interpolation
Ich habe eine Klasse Example
, mit einem Begleiter Objekt, in dem ich einen String definiert haben, SIGN
. In Klasse Example
Ich habe eine Methode dort ich einen regulären Ausdruck erstellen, und ich verwende String-Interpolation, so dass ich SIGN
verwenden kann, um meinen regulären Ausdruck zu erstellen.
Dies kompiliert, aber ich bekomme einen seltsamen Fehler zur Laufzeit. Ist das ein Scala-Bug? Ich benutze Scala 2.10.3 (unter Windows 7).
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Example {
import Example._
def regex = s"""$SIGN?\d+""".r
}
object Example {
private val SIGN = """(\+|-)"""
}
// Exiting paste mode, now interpreting.
defined class Example
defined module Example
scala> val e = new Example
e: Example = [email protected]
scala> e.regex
scala.StringContext$InvalidEscapeException: invalid escape character at index 1 in "?\d+"
at scala.StringContext$.treatEscapes(StringContext.scala:229)
at scala.StringContext$$anonfun$s$1.apply(StringContext.scala:90)
at scala.StringContext$$anonfun$s$1.apply(StringContext.scala:90)
at scala.StringContext.standardInterpolator(StringContext.scala:123)
at scala.StringContext.s(StringContext.scala:90)
at Example.regex(<console>:9)
@ raina77ow Das funktioniert auch nicht, ich bekomme die gleiche Ausnahme. – Jesper
Es sieht so aus, als ob Sie eine Version von [this issue] (https://issues.scala-lang.org/browse/SI-6476) sehen, vielleicht? Plain old 's" $ SIGN? \\ d + ". R' sollte gut funktionieren. –
Ja, es funktioniert mit '\\\'. – raina77ow