「n items()」はより堅牢であるべきでしょうか?「n items()」を使用したスクリプトで問題が発生することがよくあります。そして、「N Items() 引数はリストである必要があります」というエラーがよく見られます。
あるスクリプトでは、データの堅牢性により、nitems に入力するものが行列、数値、または文字になる場合があります。別名: 変数 = [5]、変数 = 5;変数 = "05";変数 ={5};あまり詳しく説明しませんが、この場合、「n items」に文字値、別名 n items("05") が与えられた場合は 1 が吐き出され、行列を取得した場合は 1 が吐き出されると非常に便利です。吐き出すなど。
良い点は、JSL はデータにソフト変換を行うため、不適切なデータ項目が入力されてもバグが発生しないことです。これにより、さまざまなデータに対して堅牢なスクリプトを作成するために必要なコードの量が大幅に削減されます。欠点は、遅延プログラミングにつながり、間違いを見つけるのが難しくなる可能性があることです。これは問題を引き起こす可能性があります。たとえば、行列を入力したが、nrow ではなく ncol が必要でした。または、文字列が「05, 05」であった場合、これを最初に解析する必要がありました。
コミュニティはどう思いますか? 「n 個のアイテム」がもっと堅牢だったら、それは祝福になるでしょうか、それとも呪いになるでしょうか?
Re: 「n items()」はより堅牢であるべきですか?このスレッドはかなり古いものですが、JMP 13 以降で最終的に実装されたものについて述べておこうと思います。
- NItems(行列) は、エラーではなく行列の要素数 ( rows *cols ) を返すようになりました。
- niitems("cat") は依然としてエラーを返します
- niitems([1 2 3] |/ [4 5 6]) == 6
Re: 「n items()」はより堅牢であるべきですか?マトリックスについてのあなたのアイデアが気に入っています。 nrows(matrix) * ncols(matrix) は、単に nrow または ncols を返すよりも確かに便利なようです。
値はスペース、アンダースコア、コロン (" " "_" ";") など、あらゆるもので区切られる可能性があるため、「a,b,c」に対して 3 を返すのは不適切な戻りであると私は主張します。これは、nitems に送信する前に、words() または regex() で解析するプログラマに任せるべきです。
私の場合は文字列のリストを期待していたので、最初は 1 が最も適切であると考えていましたが、前のステートメントがリストを返さなかった場合は変数を文字列として返すだけだったので、その場合は 1 が必要でした。おっしゃる通り、nitems は文字列の長さを返し、さまざまな用途に使用できれば非常に便利です。
Re: 「n items()」はより堅牢であるべきですか?nItems(matrix) が nrows(matrix) * ncols(matrix) を返した方が便利なように思えます。
niitems("a,b,c") については、1、3、または 5 のいずれかが考えられるため、何を期待するかわかりません。
Re: 「n items()」はより堅牢であるべきですか?JMP サポートはこれらのフォーラムに従う傾向があることがわかりました。私は急いでいませんし、この問題については迷っているので、この変更をリクエストするのに最適な候補者であるとは思えません。
JavaScript ではソフトな等価性が許可されていることだけは知っています。たとえば、5 == "5" は true を返しますが、5 === "5" で示されるハード e 品質では false になります。ソフトな等価性はしばしば奇妙な動作を引き起こす可能性があり、多くのプログラマーに嫌われています。多くの人は常にハード等式を使用するという偏見を持っていますが、ソフト等式を使用することはコードを堅牢にするのに非常に役立ち、プログラマが自分が何をしているのかを知っていれば命を救うことができます。
ただし、JSL は別の言語であり、ほとんどのスクリプトライターはプログラミングのバックグラウンドを持っていないように思えます。したがって、堅牢な niitems を許可すると言語に悪影響を与える可能性がありますが、同時にそれを大いに活用できるようになります。
Re: 「n items()」はより堅牢であるべきですか?あなたの提案は良い提案だと思います。そして、コミュニティ全体がどのように考えているかに関係なく、提案は JMP のサポート グループに送信されるべきです。彼らだけが変化に影響を与えることができます。
そして、あなたのディスカッションをあまりにも早く読みすぎて、コミュニティからの意見を求めるリクエストを見逃してしまったことをお詫びします。
Re: 「n items()」はより堅牢であるべきですか?それは質問の答えにはなりません。
Re: 「n items()」はより堅牢であるべきですか?「Is List」関数を使用すると、値がリストであるかどうかを確認できます。したがって、以下はスケーラー、リスト、行列に対して機能します。
x= スケーラー、行列、またはリスト
If(はリスト(x)
カウント=1
)