java - 假设 - 支持非字符串文本中的非 ASCII 字符

标签 java compiler-construction programming-languages ascii portability

例如,在 Java 版本 9 中,有人想添加对 ≤ 和 ≥ 字符作为操作数的支持,它们分别与 <= 和 >= 操作数完全一样。这可能吗,因为 ≤ 和 ≥ 是非 ASCII 字符/不是标准字符集的一部分,而不破坏可移植性?可行吗?有没有任何主要的编程语言支持这样的东西?

最佳答案

Java 不允许运算符重载,因为这是该语言的一个非常基本的原则,我认为您永远无法将 ≤ 或 ≥ 用于 <= 或 >=。

但是,Scala(另一种 JVM 语言)支持使用 Unicode 字符作为标识符的运算符重载。这是一个示例 REPL session ,我在其中为数字类型定义了 运算符:

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 - 假设 - 支持非字符串文本中的非 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15675000/

相关文章:

java - 登录成功后,url重新重定向到/login

java - Java中使用hashmap的简单缓存

c# - 在编译时评估表达式

java - 进口声明的历史是什么?

programming-languages - 我可以从我的 USB 闪存驱动器编写和编译哪些编程语言?

java - Checkmarx 修复 CGI_Stored_XSS 漏洞

java - 如何定义和初始化一个生成 2 到 20(含)随机整数的变量?

c - 8051系列的最佳C编译器是什么?

compiler-construction - 检测单个语句引发的潜在 FPU 条件

programming-languages - 按名称传递和按值结果语言传递