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を使う。と覚えておきましょう。



コメント