Все объекты гарантированно имеют метод .equals()
, поскольку Object содержит метод, .equals()
, который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. С помощью ==
) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals()
и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.
Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder
. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==
, это был бы прекрасный способ. Строки сами не делают.
Благодаря таким вопросам я не отстаю от новых технологий и инструментов.
Я быстро прочитал документацию , хотя VSCode поддерживает несколько языков, на которых страница ссылается на VS Code Marketplace для расширений, а ruby является одним из них.
Теперь, расширение Ruby утверждает, что имеет IntelliSense и автозаполнение, однако, если это не обнаруживает ваш API, вам может понадобиться создать собственное расширение языка / g3]. Я предполагаю, что если ваш Ruby является API, как вы сказали, VSCode не имеет доступа к интерфейсу, чтобы обеспечить возможные прогнозы. Возможно, если вы каким-то образом сможете получить исходный код API VSCode, он обнаружит интерфейсы, и жизнь будет намного проще.
В любом случае, посмотрите на поддержку extensionAPI7Language . объясните, как создать
, которые должны быть настроены вручную.