引数から配列を得る関数

投稿者:Material 305033 1 mini cfm_ 投稿日:2016/05/11 17:06

配列を、引数でわけて設定する関数 (スクリプト/配列を一気に設定する関数とは違い、引数それぞれが1つの要素になります)

例)a=array2(1,20,5) → a[0]=1, a[1]=20, a[2]=5

null!="null"かつtoString(null)=="null"を利用してnullを判別し、引数が1~16個のいくつでも正常に動くようにした関数です。

関数名が思いつかないので、使う際は何かわかりやすい名前に変えちゃってください。
引数の数は16個までですが、足りなかったら付け足せます。

もっと良い書き方があれば言ってください。

def array2(a00,a01,a02,a03,a04,a05,a06,a07,a08,a09,a10,a11,a12,a13,a14,a15)
 a=createArray()
 if toString(a00)=="null"&&a00!="null" then return a;else pushArray(a,a00);end
 if toString(a01)=="null"&&a01!="null" then return a;else pushArray(a,a01);end
 if toString(a02)=="null"&&a02!="null" then return a;else pushArray(a,a02);end
 if toString(a03)=="null"&&a03!="null" then return a;else pushArray(a,a03);end
 if toString(a04)=="null"&&a04!="null" then return a;else pushArray(a,a04);end
 if toString(a05)=="null"&&a05!="null" then return a;else pushArray(a,a05);end
 if toString(a06)=="null"&&a06!="null" then return a;else pushArray(a,a06);end
 if toString(a07)=="null"&&a07!="null" then return a;else pushArray(a,a07);end
 if toString(a08)=="null"&&a08!="null" then return a;else pushArray(a,a08);end
 if toString(a09)=="null"&&a09!="null" then return a;else pushArray(a,a09);end
 if toString(a10)=="null"&&a10!="null" then return a;else pushArray(a,a10);end
 if toString(a11)=="null"&&a11!="null" then return a;else pushArray(a,a11);end
 if toString(a12)=="null"&&a12!="null" then return a;else pushArray(a,a12);end
 if toString(a13)=="null"&&a13!="null" then return a;else pushArray(a,a13);end
 if toString(a14)=="null"&&a14!="null" then return a;else pushArray(a,a14);end
 if toString(a15)=="null"&&a15!="null" then return a;else pushArray(a,a15);end
 return a
end


 テスト
a2=array2("aa", "bb", "cc")
a3=array2(1.5, 2.5, 3.5, 4.5, 5.5, 6.5)
             #実行結果
speak(a2[0]) #aa
speak(a2[2]) #cc

speak(a3[0]) #1.5
speak(a3[2]) #3.5
speak(a3[5]) #6.5


 参考
「"null"と数値を比較するとエラーが発生したり、ある数でtrueになる」ということはありません。

"null"と数値を比較したところ、イコールでも不等号でもfalseが返されました。
また、同じくtrueとfalseとの比較もエラーは発生しません。

toString(3/0)=="Infinity", toString(0%0)=="NaN" なので、nullと計算結果が一致することはないと思われます。 (infinity=無限)


コメントする

コメントするには、ログインする必要があります。

コメント一覧

            mini mosmoss(投稿日:2016/05/11 22:15, 履歴)
いこさみさんのやつは、
数字とかfalseとか文字とか色々あるときはどうするのかなー
toNumberとか使うのかなーと思ってましたけど
これだと混在してても大丈夫そうですね。