文字列の計算
何となく、後輩と話してて出てきたネタ。
例えば、
"foo" * 5;
の結果は言語によって異なる。
更に
"3" * 5;
の結果も言語によって異なる。
面白いなぁと思ったので
まとめもせずダラ書きしてみる
Perl
yoshiori@macBook $ perl -e 'print "foo" * 5'
0
yoshiori@macBook $ perl -e 'print "3" * 5'
15
Python
yoshiori@macBook $ python -c 'print "foo" * 5'
foofoofoofoofoo
yoshiori@macBook $ python -c 'print "3" * 5'
33333
Ruby
yoshiori@macBook $ ruby -e 'print "foo" * 5'
foofoofoofoofoo
yoshiori@macBook $ ruby -e 'print "3" * 5'
33333
JavaScript だと
"foo" * 5 が 「NaN(Not a Number)」になって
"3" * 5 は 15 になる。
JavaFxScript の仕様の話してたのに
いつの間にか連想配列に行きこんな話になってた・・・
というダラ書きで今日の「0.1」
p.s.
yoshiori@macBook $ jrunscript -e 'print( "3" * 5 );'
15
コメント
確かにそれはある。 でも、PerlとJavaScript が正しいような。 結局"foo" だとNullだから、0かNaNじゃない? ん~でもPythonとRubyの計算も捨てがたいような… ま、コード書いてるときは気をつけろと言うことだね。
投稿者: go55man | 2007年5月 9日 21:14
>PerlとJavaScript が正しいような。
そうなんですが、
"3" + 5
とかやると更にカオスになります♪
Perl は文字列の連結に 「.」使うので
普通に 「8」になるのですが
JavaScript は文字列の連結に「+」使うので「35」になるのですw
投稿者: ヨシオリ | 2007年5月 9日 21:32