Скажем, например, что в Java версии 9 кто-то хотел добавить поддержку символов ≤ и ≥ в качестве операндов, которые будут работать точно так же, как и < = и > = операнды соответственно. Было бы возможно, так как ≤ и ≥ не являются символами ASCII/не являются частью стандартной кодировки, не разрушая переносимость? Было бы возможно? Поддерживают ли какие-либо основные языки программирования что-то вроде этого?Hypothetical - поддержка символов, отличных от ASCII, в тексте без строки
ответ
Java не позволяет перегрузке оператора, и поскольку это довольно фундаментальный принцип языка, я не думаю, что вы когда-либо сможете использовать ≤ или ≥ для < = или> =.
Однако Scala (другой язык JVM) поддерживает как перегрузку оператора , так и с использованием символов Юникода в качестве идентификаторов. Вот РЕПЛ сессия примера, где я определяю ≤
и ≥
операторов для числовых типов:
scala> implicit class ExtendedNumeric[T](n: T)(implicit numeric: Numeric[T]) {
| import numeric._
| def `≥`(other: T) = n >= other
| def `≤`(other: T) = n <= other
| }
defined class ExtendedNumeric
scala> 1 ≤ 2
res0: Boolean = true
scala> 5 ≤ -5
res1: Boolean = false
scala> 8.0 ≥ 0.0001
res2: Boolean = true
Я не имел в виду перегрузку оператора в том смысле, что программист определяет новый оператор), я имел в виду, что они фактически добавят его в компилятор в Java 8, так как они добавляют поддержку лямбда-выражений. Это возможно? Если это так, значит, какой-либо язык уже имеет «неотъемлемую» поддержку для ≤ и ≥ - в том смысле, что вам не нужно их определять, прежде чем использовать их, как в вашем примере? – user1126849
Редактирование: Я только что узнал, что, по-видимому, ALGOL поддерживает ≤ и ≥, а также ÷ и несколько других специальных символов. Если такой старый язык поддерживает их, почему не самые современные? – user1126849
@ user1126849 - [APL] (http://en.wikipedia.org/wiki/APL_syntax_and_symbols), еще один очень старый язык (1964), также поддерживает ≤ и ≥ в качестве операторов. По-моему, причина, по которой большинство современных языков программирования не поддерживает их, состоит в том, что на стандартной клавиатуре сложно вводить символы, отличные от ASCII. (Легко набирать ≤ & ≥ на OSX, но не так просто в Linux или Windows по умолчанию.) – DaoWen
Java уже поддерживает не-ASCII символы. Например, следующая программа компилируется нормально:
public class Test {
public static final float π = 3.1415927f;
public static void main(String[] args) {
System.out.println(π);
}
}
(Конечно, вы должны будете использовать кодировку исходного файла, содержащего n)
Однако, поскольку ≤ и ≥ не может быть использована в идентификаторах, представляя их как операторы, не будет нарушать совместимость в обратном направлении.
Поддержка многочисленных языков, определяющих ваши собственные операторы. В конце концов, единственное, что отличает оператор от вызова функции, - это нотация infix, то есть имя оператора появляется между, а не перед его операндами. Для (неполного) списка таких языков см. Статью wikipedia по адресу operator overloading.
Подождите, я думал, что имена переменных должны начинаться с буквы, знака доллара или подчеркивания? – user1126849
π - это буква в греческом алфавите. – meriton
Да, но изначально я думал, что для этой цели используются только буквы a-z и A-Z. Разрешены ли все греческие письма? – user1126849
- 1. Только для удаления символов, отличных от ASCII
- 2. Bash: Преобразование символов, отличных от ASCII, в ASCII
- 3. Хорошие представления ASCII для символов, отличных от ASCII?
- 4. Markdown, Perl и кодировка символов: рендеринг символов, отличных от ASCII
- 5. Получение символов, отличных от ASCII, для работы в функциях Ren'Py
- 6. Получение символов, отличных от ASCII, в ответе WebBroker в Delphi
- 7. Соединение Firebird с использованием символов, отличных от ASCII, в пути
- 8. Предотвращение захвата символов, отличных от ASCII, в UITextView
- 9. Удаление символов, отличных от ascii, в файле csv
- 10. Как включить чтение символов, отличных от ascii, в сервлетах
- 11. chr для символов, отличных от ASCII, в Python
- 12. Обработка символов, отличных от ascii, в textField: shouldChangeCharactersInRange: replacementString:
- 13. Вставка символов, отличных от ASCII, в pdf с Python reportlab
- 14. Использование символов, отличных от ASCII, в командном файле cmd
- 15. Хранить дедуплицированный список символов, отличных от ascii, в массиве
- 16. Поиск конкретных символов, отличных от ASCII, в Unix
- 17. найти текст для символов, отличных от ASCII, в python
- 18. Надежный способ обработки символов, отличных от ASCII, на Python?
- 19. JavaFX - get KeyEvent для символов, отличных от ASCII
- 20. Нужен ли мне web.config для символов, отличных от ASCII?
- 21. Что может вызывать вопросительные знаки вместо символов, отличных от ASCII?
- 22. Ограничение Postgresql для проверки символов, отличных от ascii
- 23. Удаление символов, отличных от ASCII, из файлов данных
- 24. Написание кодов символов, отличных от ASCII, до двоичного файла
- 25. Использование символов, отличных от ASCII, на метаданных песни сервера SHOUTcast
- 26. Selenium Python 2.7 - утверждение символов, отличных от ascii
- 27. Задание символов, отличных от ASCII для NSIS 'LangString
- 28. Замена символов, отличных от ASCII, на английские эквиваленты
- 29. Чтение символов, отличных от ASCII, из текстового файла
- 30. Кодирование/декодирование символов, отличных от ASCII, при использовании Python Pandas
Вы не можете использовать unicode в исходном коде Java? – Patashu