【问题标题】:How to write strict-greater? (-lesser?, -greater-or-equal?, -lesser-or-equal?)如何写严格大于? (-lesser?, -greater-or-equal?, -lesser-or-equal?)
【发布时间】:2015-03-30 14:19:51
【问题描述】:

Rebol 和 Red 将普通的 equal? 函数(提供的中缀简称为 =)视为一种“自然平等”。因此它愿意比较1 = 1.0,即使一个是整数而另一个是浮点数...并且默认情况下不区分大小写地比较字符串和字符。

strict-equal? 函数区分大小写,要求事物是相同的数据类型,并作为中缀绑定到 ==。 (还有一个strict-not-equal? 函数为!==。)

但是,其他比较运算符似乎没有严格的变体。如何使用框中的原语实现strict-greater?strict-lesser-or-equal? 等?

行为例如:

>> strict-lesser? "A" "a"
== true

【问题讨论】:

  • 在 Rebol2 中两者都较小? “a” “A” 和更小? "A" "a" 返回假。较小? #"A" #"a" == char 为真!值。

标签: case-sensitive rebol comparison-operators rebol3 red


【解决方案1】:

正如endo64 指出的那样,字符串是绊脚石,但由于它们的组成部分、字符具有所需的严格不等式,因此解决方案似乎是逐个字符地比较字符串(“按字典顺序”,如果您愿意的话)。这适用于 Rebol2、Rebol3 和 Red。

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 2017-04-12
    • 1970-01-01
    • 2015-11-29
    • 2016-11-24
    • 2017-07-17
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多