Все объекты гарантированно имеют метод .equals()
, поскольку Object содержит метод, .equals()
, который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. Используя ==
) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals()
и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.
Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder
. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==
, это был бы прекрасный способ. Строки сами не делают.
Попробуйте перейти к этому коду и тегам javascript специально для вашего интерфейса. Текущий renderUI () не использует реактивный контент. Проверьте также консоль javascript, чтобы увидеть, генерирует ли скрипт какие-либо ошибки. Ниже было бы лучше добавить его в виде библиотеки, которая загружается при создании пользовательского интерфейса. Если вам нужно вызвать функцию javascript в реактивном интерфейсе, вы можете вызвать функции, которые загружаются в скрипт 3Dmol-min.js, в частности.
dashboardPage(
tags$head(tags$script(src="http://3Dmol.csb.pitt.edu/build/3Dmol-min.js")),
Существует конфликт между 3DMol jquery и блестящей JQuery.
Если вы запускаете скрипт nojquery, он работает:
теги $ head (теги $ script (src = "http://3Dmol.csb.pitt.edu/build/3Dmol-nojquery.js") )