我在功能的一部分遇到了一些麻烦。我的函数需要一个至少3个字符的输入字符串以避免错误,为此需要添加一个或两个“。”在var。看起来像这样:
fun function(a, b) =
if size(a) < 2 then a ^ " " else if size(a) < 3 then a ^ " "
if size(b) < 2 then b ^ " " else if size(b) < 3 then b ^ " "
功能代码;
我的问题是,我如何结束第一个if行?因为它现在是secound if语句出错。
谢谢/ joakim
答案 0 :(得分:2)
首先,这没有任何意义。 if-then-else
必须包含所有三个部分:您不能省略else
,您的尾随if-then
显然会这样做。
其次,多个语句(由;
分隔)仅在存在副作用时才有用,而副作用则没有。您可以将代码更改为
fun function (a, b) =
( if size a < 2 then a ^ " " else
if size a < 3 then a ^ " " else
a
; if size b < 2 then b ^ " " else
if size b < 3 then b ^ " " else
b
)
但是第一个语句的结果将被丢弃,并且完全没用。
也许你想要更像
的东西fun padLeft (n, a) =
if size a < n
then a ^ CharVector.tabulate(n - size a, fn _ => #" ")
else a
fun function1 (a, b) = (padLeft (3, a), padLeft (3, b))
fun function2 (a, b) = (print (padLeft (3, a)); print (padLeft (3, b)))
其中function1
使用两个输入返回一对,function2
返回unit
但使用两个输入都有可见的副作用。