0

関数の一部に問題があります。私の関数は、エラーを回避するために少なくとも3文字の入力文字列を必要とします。これを行うには、1つまたは2つの「。」を追加します。変数で。次のようになります。

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行をどのように終了するのですか?これで、ifステートメントでエラーが発生します。

ありがとう/joakim

4

1 に答える 1

2

まず、これは意味がありません。には 3 つの部分がすべて含まれている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)))

wherefunction1は両方の入力を使用してペアを返し、function2戻りますunitが、両方の入力を使用して目に見える副作用があります。

于 2009-12-14T18:54:14.237 に答える