0

Fe inc 関数を実装したい:

FUNCTION inc RETURNS INT (INPUT-OUTPUT i AS INT, AddExpression AS INT):
  i = i + AddExpression.
END FUNCTION.

次のように使用します。

inc(tt-data.qty,1).

DECデータ型の関数をオーバーライドする方法や、両方を 1 つに結合する方法が見つかりませんでした。可能であれば、関数でCHAR-種類のADD-ENTRY. たぶん、この基本的な機能はすでに誰かによって実装されていますか? OEHiveのこのSTLibのようなもの。

4

1 に答える 1

3

単純な古いユーザー定義関数は、単一の署名のみを持つことができます。あなたの関数定義は少し「オフ」です。入出力パラメーターを使用しており (「間違っている」わけではありませんが、奇妙です)、値を返していません。これ間違っています。次のようになります。

function inc returns integer ( input-output i as integer, addExpression as integer ):
  i = i + addExpression.
  return i.
end.

プロシージャーはデータ型の規則が多少緩和されており、いくつかの型変換が自動的に行われます (暗黙の 10 進数から整数への変換など)。これは、たとえば、自動的に丸められる小数を渡すことをサポートします。

procedure z:

  define input-output parameter i as integer no-undo.
  define input parameter x as integer.

  i = i + x.

  return.

end.

関数をクラスのメソッドとして作成する場合、メソッド シグネチャをオーバーロードできます。

これらの行に沿ったもの(テストされていません):

class X:
  method public integer inc( input-output i as integer, input addExpression as integer ):
    i = i + addExpression.
    return i.
  end. 
  method public integer inc( input-output i as integer, input addExpression as character ):
    i = i + integer( addExpression ).
    return i.
  end. 
end.
于 2013-08-19T13:00:48.007 に答える