使用'compare'函数比较字符串

时间:2016-10-12 01:34:16

标签: sml

要比较两个字符串并将字符串添加到列表中,如果它们相等,我使用内置的比较函数创建了这个函数:

fun compareString(string, list) = 
    if compare(string, "hello") = EQUAL then string::list;

但是,这会产生错误。我想我的语法一定是错的,我是否正确使用了比较功能?

根据文档,比较功能的工作原理如下:

  

compare(s,t)使用字符上的排序Char.compare对两个字符串进行字典比较。如果s小于,等于或大于t,则返回LESSEQUALGREATER

1 个答案:

答案 0 :(得分:5)

  • 您忘记的是 if-then-else else ... 部分。这部分是强制性的。

  • 您可能希望专门使用函数 <html lang="en"> <head> <title>Input Text Number Disable</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> </head> <body> <input type="number" /> <script> $('input').keypress(function(event){ event.preventDefault(); }); </script> </body> </html>

  • 如果您只关心相同的情况,您可以简单地使用String.compare运算符。

  • 名称​​ compareString 是将字符串汇总到列表的函数的奇怪名称。

  • 名称​​ string list 也不是很好的变量名,因为它们没有描述变量的用途。如果函数是通用的,那么通用名称可能是合适的,你可以选择你喜欢的通用名称的任何方案。

  • 包含谓词(字符串必须等于=)似乎有点傻,因为你会确切地知道该列表的样子;它将与正整数同构。相反,如果将包含谓词作为参数,则该函数实际上可能有用。

例如:

"hello"

或者将其变为二元运算符并将其命名为fun consIf (p, x, xs) = if p x then x :: xs else xs fun is_greeting x = List.exists (fn y => x = y) ["hello", "hi", "good day"] val ys = consIf (is_greeting, "hello", ["hi"]) ,因为它类似::?条件:

::