2014-01-07 65 views
3

對不起,這個基本的問題,但我不明白這一點:如果我使用正常的關係比較運算符與術語 - 它是如何工作的?Erlang比較運算符是如何工作的?

例如:

"AAA" > "aaa" => false - 爲什麼比"aaa""AAA"

如果我有兩個原子:

atom1 < atom2 => true - 爲什麼atom1小於atom2

如何/何時使用比較運算符與原子?

回答

8
  1. A具有ASCII碼65,a具有ASCII碼97從而"A" < "a"
  2. 引用發明人:「實際的順序並不重要 - 但總體順序的定義很重要」。這是因爲您希望所有條款都具有可比性,因爲只有在這種情況下您纔可以對其進行分類(這通常是有用的)。

的確切規則給出在http://www.erlang.org/doc/reference_manual/expressions.html#id77480

7.11期限比較

以下順序被定義:

數<原子<參考<樂趣<端口< PID <元組<列表<位串

列表按元素逐個比較。元組按大小排序,具有相同大小的兩個元組按元素進行比較。

+0

感謝您的回答! – user3169252

+0

要比較兩個原子,它會對原子中的字符進行直接詞法比較,如果字符相同,則較長的原子較大。所以'cat> car => true'和'cat < cats => true'。 – rvirding

+0

這是真的,但是,我無法找到它是否有*的信息。 – filmor