Index Errorを扱う
先日作成したCSVをJSONに変換するプログラムをもっと実用的にしようと、各行の長さ(要素数)が等しくない場合の扱いを書いていました。
改めてJavascriptの配列とPythonのリストは似ているようで違うなぁと感じたので整理を。
Pythonのリストで要素数の外側のインデックスを指定された場合の例外を扱うにはtry文を使わなければならないです。
例えば
a = [0,1,2,3,4]
というリストに対してa[5]を参照しようとするとPythonではIndexが外側であるという例外となるためtry文で扱わなければいけません。
もしa[5]を参照された場合は"out"という文字列を返したい場合
a = [0,1,2,3,4] try: p = a[5] except IndexError: p = "out" print (p) # out
Javascriptであれば次のように書くだけでいけます。
var a = [0,1,2,3,4]; var p = a[5] || "out"; window.alert(p); // out
最初Javascript風に
#まちがい p = a[5] or "out"
と、何とかしたら書けるんじゃないかと思って色々試したのですがやはり無理でした。
そもそもJavascriptは配列の外側を参照された場合はundefinedという値(?)を返すのであって例外にはならないのに対しPythonのリストは外側が参照された時点で例外であるためですね。
ただ毎回try〜exceptを書かなくてもいけそうな・・・何かこういう場合の定番のやり方があるような気がしているのですが現段階ではわかりませんでした(^_^;)
ところでEclipseがなぜかショートカットから起動できなくなる現象が発生するのだけどなぜだろう・・・。