Я думаю, Bootstrap уже размещает модал выше z-index: 1000
(я не знаю, где именно), и то, что вы хотите сделать, работает с z-index: 2000;
. Кнопка также должна быть в position: relative
Не уверен на 100%, верно ли это, но моя интуиция говорит, что без этого явного приведения вы бы сопоставили шаблон с java.lang.String
, что не то, что вам нужно.
Явное приведение заставляет компилятор Scala использовать Predef.stringWrapper
неявное преобразование; таким образом, как RichString расширяет Seq [Char]
,
В этом вопросе и комментариях происходит реальное злоупотребление терминологией. В этом коде нет приведений, и, в частности, «Так что, по сути, это серьезная уступка совместимости с Java, принося в жертву некоторую устойчивость типов», в действительности не имеет под собой никаких оснований.
Приведение в стиле scala выглядит следующим образом: x.asInstanceOf [Y]
.
Вы видите выше назначение: val z: Seq [Char] = x
Это назначение допустимо, поскольку существует неявное преобразование из String
в Seq [Char]
. Я еще раз подчеркиваю, , это не актерский состав . Приведение - это произвольное утверждение, которое может потерпеть неудачу во время выполнения. Неявное завершение преобразования невозможно.
Проблема зависимости неявных преобразований между типами и ответа на исходный вопрос заключается в том, что неявные преобразования имеют место только в том случае, если исходное значение не проверяет тип. Поскольку сопоставление со строкой абсолютно законно, преобразование не выполняется, совпадение просто не удается.
Я собираюсь повторить все, что сказал Андри. Для совместимости строки Scala являются java.lang.String
s. В Predef
есть неявное преобразование из String
в RichString
, которое реализует Seq [Char]
.
Возможно, более приятный способ кодирования совпадения с образцом, без необходимости промежуточного значения z
для хранения Seq [Char]
:
def containsScala(x: String): Boolean = {
(x: Seq[Char]) match {
...
}
}