isempty で関数の引数をチェックしますか?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />という関数がありますテーブルの存在。テーブル名を文字列として渡すと、テーブルが存在する場合は true を返し、存在しない場合は false を返します。最近、入力引数が何かにバインドされているかどうかを確認して更新することにしましたが、それは気に入らないようです。
例えば:
虚しい( xyz )
ログに 1 を返します。これは、xyz が何にもバインドされていないことを意味します。でも試してみたら
テーブルの存在( xyz )
次のエラー メッセージが表示されます。
エラー: 名前が解決されていません: xyz が 'xyz' のアクセスまたは評価にあります、xyz
関数は次のとおりです。
テーブルの存在=関数( {テーブル名} 、
{デフォルトのローカル} 、
tbl_exists_flag = 0 ;
もし( !虚しい(テーブル名) 、
// すべてのテーブルをループして、このテーブルが存在するかどうかを確認します
テーブル数=テーブル() ;
のために(私= 1 、私<=テーブル数、私++、
一名=データ表(私) <<名前の取得;
もし(一名==テーブル名、
tbl_exists_flag = 1 ;
壊す() ; // テーブルが見つかったのでループから抜け出します
) ;
) ;
) ;
tbl_exists_flag ;
) ;
Re: isempty で関数の引数をチェックしますか?xyz 変数は、その値を関数に渡すことができるように評価する必要があります。
これに対処するには 2 つの方法が考えられます。 特定の変数を使用している場合は、スクリプトの先頭でその変数を Empty() に割り当てることができます。 xyz = 空()。 後で名前が付けられた場合、それは通過します。名前が付けられない場合は空になります。
もう 1 つの方法は、関数呼び出しを try でラップし、未定義変数の場合を関数に渡す前に処理することです。 try(table_exists(xyz), "テーブル名がありません")
Re: isempty で関数の引数をチェックしますか?table_exists 関数は汎用であるため、空の変数で呼び出された場合の状況を適切に処理したいと考えました。
Re: isempty で関数の引数をチェックしますか?xyz (未定義の JSL 変数) を関数に渡しているため、エラー メッセージが表示されると思います。 JSL は xyz (関数のコードを実行する前に) を解析しようとしていますが、空であるために失敗すると思います。 関数呼び出しで xyz を引用符で囲んでみてください。
table_exists("xyz")