标准 ML:搜索元组列表
Standard ML : Searching a list of tuples
我正在尝试用 SML 编写一个函数来搜索元组列表中的字符串,如果它在元组的第一个元素中找到该字符串,它 return 就是第二个。
fun getFromBlist (name : command, (x,y)::tail : (command*command) list) =
if x = name then y else getFromBlist(name, tail)
| getFromBlist(name, []) = ***** WHAT GOES HERE?!? *****
有什么我可以用于基本情况但 return 什么都没有的东西吗?我尝试的一切,都会出错。我也愿意接受这里的其他建议,谢谢。
您可以使用 Option 结构到 return NONE 作为基本情况,
我稍微重新格式化了代码,将基本情况放在第一位,
以及 returning SOME y 进行匹配,NONE 进行基本情况。
从那里您可以使用 case 语句或模式匹配来检索结果。
type command = string;
fun getFromBlist(name, []) = NONE
| getFromBlist (name : command, (x,y)::tail : (command*command) list) =
if x = name
then SOME y
else getFromBlist(name, tail);
或者,根据您的需要,对于基本情况,您可以 return 空字符串 "",和 return y,就像您最初所做的那样。这在某种程度上取决于空字符串是否是有效命令,并且您想区分它和基本情况。
但要总结基本情况,以及 then 的结果
必须 return 相同的类型,无论是 string,还是 option
我正在尝试用 SML 编写一个函数来搜索元组列表中的字符串,如果它在元组的第一个元素中找到该字符串,它 return 就是第二个。
fun getFromBlist (name : command, (x,y)::tail : (command*command) list) =
if x = name then y else getFromBlist(name, tail)
| getFromBlist(name, []) = ***** WHAT GOES HERE?!? *****
有什么我可以用于基本情况但 return 什么都没有的东西吗?我尝试的一切,都会出错。我也愿意接受这里的其他建议,谢谢。
您可以使用 Option 结构到 return NONE 作为基本情况, 我稍微重新格式化了代码,将基本情况放在第一位,
以及 returning SOME y 进行匹配,NONE 进行基本情况。 从那里您可以使用 case 语句或模式匹配来检索结果。
type command = string;
fun getFromBlist(name, []) = NONE
| getFromBlist (name : command, (x,y)::tail : (command*command) list) =
if x = name
then SOME y
else getFromBlist(name, tail);
或者,根据您的需要,对于基本情况,您可以 return 空字符串 "",和 return y,就像您最初所做的那样。这在某种程度上取决于空字符串是否是有效命令,并且您想区分它和基本情况。
但要总结基本情况,以及 then 的结果 必须 return 相同的类型,无论是 string,还是 option