Mathematica では、式をリストにマッピングしながら、より複雑な式で変換を使用しようとしています。なんらかの理由で、変換ルールを使用するとまったく異なる値になりますが、その理由はドキュメントからわかりません。
Clear[x, values]
values = {{1}, {2, Null, 3}, {4, 5, Null, 6, Null }}
Out[122]= {{1}, {2, Null, 3}, {4, 5, Null, 6, Null}}
Length[x] /. x -> DeleteCases[#, Null] & /@ values
Out[123]= {0, 0, 0}
Length[DeleteCases[#, Null]] & /@ values
Out[124]= {1, 2, 3}
更新: これまでのところ、 が定義されていないLength[x]
場合でも有効な式であるx
ことがわかりました。これは、引数 toLength[]
がその式のコンポーネントの数を返す式であるためです。x
ここで、置換されるまで評価を遅らせる方法を理解する必要があります。