https://www.youtube.com/watch?v=hXPFe071zqU
『超時空要塞マクロス』(1982)
マクロスも夢中になったアニメですが、当時はバルキリーに夢中だったので、人間ドラマを全然観てませんでした。主題に「歌」ってのも画期的だったし、シリーズ化されてもなお、歌の存在が大きいことは、マクロスとしてブレてない気がします。そして何よりバルキリーがカッコいい。出てくるバルキリーはいちいちカッコいいんですよね。なので初見ではストーリーあまり見てなかったかも。
ストーリーですが、何度も見て、テレビ版の超時空要塞マクロスは、最終回は納得いかないなあと、スッキリしないこともありましたが、今はいい歳になったので、こういう終わり方もありかなと。最近のマクロスシリーズって歌めちゃくちゃ上手いなあと、聞き入ってしまいますが、アニメの方はファーストが一番面白いと思ってます。
動画は、年末発売予定のバルキリーの超合金に関してのスペシャルムービーです。これ欲しいです。当時もバルキリーの超合金ありましたが、プラモデルで我慢していました。今回ぜひ購入して、机の上に飾りたい!
前回、文字列の長さを得るには、「長さ」だから、lengthメソッド(プロパティ)と覚えました。では、配列数は、「数」だからcountメソッドになるのでしょうか?
なりません。あくまでこじつけて覚える方法なのですべてのケースに当てはまらないです。配列数の覚え方としては、文字列と同じ、でいきましょう。つまりlengthです。
では、使用例。awkから。
takk@deb9:~/tmp$ cat t.awk BEGIN{ arr[0] = 10 arr[1] = 20 arr[2] = 30 arr[3] = 40 print length(arr) } takk@deb9:~/tmp$ awk -f t.awk 4 takk@deb9:~/tmp$
awkの連想配列の要素数は、length関数で取得できます。
まあ、初期化はsplitを使って行う方がスッキリするってのもあって、初期化時の要素数は、splitの戻り値でも確認できますが、途中で配列数に変更があるかもしれませんので、lengthが安全です。
takk@deb9:~/tmp$ cat t2.awk BEGIN{ num = split("10 20 30", arr, " ") print num print arr[3] arr[4] = 40 arr[5] = 50 print length(arr) } takk@deb9:~/tmp$ awk -f t2.awk 3 30 5 takk@deb9:~/tmp$
次はRuby。lengthでもsizeでも、やはり両方許容しているところすごいです。
takk@deb9:~/tmp$ cat t.rb arr = [1,2,3,4] p arr.length() p arr.size() takk@deb9:~/tmp$ ruby t.rb 4 4 takk@deb9:~/tmp$
Python。lenという名称で貫いています。
takk@deb9:~/tmp$ cat t.py a=[1,2,3,4] print(len(a)) takk@deb9:~/tmp$ python t.py 4 takk@deb9:~/tmp$
C#。文字列と同じく、Lengthプロパティです。
takk@deb9:~/tmp$ cat t.cs class Test { static void Main() { int[] arr = new int[5]; System.Console.WriteLine(arr.Length); } } takk@deb9:~/tmp$ mcs t.cs takk@deb9:~/tmp$ mono t.exe 5 takk@deb9:~/tmp$
Java。二次元配列がいけるので、lengthではいけないような気がしますが、要素数の取得は一次元単位で行うので、文字列の扱いと同じです。lengthで良いのですが、こちらはメソッドではなく、メンバ変数となっています。まあ、前回はオブジェクトのメソッド呼び出しだったのに対して、今回はプリミティブなので、メソッドは持ってないから当然なのですが。ややこしい原因かもしれません。
takk@deb9:~/tmp$ cat t.java import java.io.*; class Test{ public static void main(String args[]){ int[] a = new int[5]; int[][] b = new int[5][2]; System.out.println( "" + a.length ); System.out.println( "" + b.length ); System.out.println( "" + b[0].length ); } } takk@deb9:~/tmp$ javac t.java takk@deb9:~/tmp$ java Test 5 5 2 takk@deb9:~/tmp$
いろいろ見ましたが、文字列の長さも、配列の要素数も、lengthを使う。と覚えておきましょう。
コメント