您好,我正在尝试在 ML 中执行 incFirst 函数。该函数执行以下操作:incFirst "bad" = "cad" incFirst "shin" = "thin"。这就是我尝试做的事情,fun incFirst s = chr(ord s + 1) ^ substring(s, 1, size s -1);
我收到以下错误:无法将字符串(In Basis)与 char(In Basis)(不同类型的构造函数)在 chr (ord s + 1) ^ substring (s, 1, . .. - ...) 异常 - 引发“静态错误”失败如果“^”运算符不起作用,我知道如何将字符与字符串连接起来吗?
问问题
1157 次
1 回答
0
该运算符正在工作,只是您只能连接字符串,并且ord
对字符进行操作,而不是对字符串进行操作。
(一个字符与一个字符的字符串不同。)
您需要提取第一个字符,然后将结果转换为字符串
fun incFirst s = String.str(chr (ord (String.sub (s,0)) + 1)) ^ substring(s, 1, size s - 1)
或者您可以通过列表绕道而行
fun incFirst s = let
fun inc (c::cs) = (chr(ord c + 1))::cs
in
implode (inc (explode s))
end
于 2018-01-10T12:50:15.327 回答