今日からしばらく、職場で Linux 環境をメインに作業が出来るようになった。実験色が強い仕事なので、安定してなくても別にいいので無料のディストリビューションと言われ、多少悩んで Fedora 8 をチョイス。別の Red Hat 系列でも良かったんだけど、俺の他のメンバーも触るとなると、とりあえず日本語の情報がそれなりにあるところから選ばないといけないんだよな。個人的な趣味丸出しでいいってんなら Gentoo なんだけど、インストールと基本的な環境構築が一日仕事だからな。流石に仕事でそんな手間はかけてられんよ。そもそも俺以外誰も管理出来ないというかしたくないだろうし。
Python では文字列のリストを区切り文字で連結するには、次のような書き方をする。
slist = ['aaa', 'bbb', 'ccc']
s = '\t'.join(slist)
個人的にこれはなんとなく邪悪だと思うわけだが、だからと言ってリスト/イテレータ/ジェネレータに join メソッドを追加して、文字列以外のオブジェクトを暗黙のうちに str や unicode で文字列化してもいいのかというと、そっちはさらに邪悪だと思うのだよなあ。
ここで少し発想を変えて、例えば次のような定義の generic なクラスがあったとする (文法は適当)。
class List<T> {
void add(T t) {
...
}
T get(int index) {
...
}
}
このようなクラス List に対して String が型パラメータとして与えられた時、以下のようにメソッドを追加すると言うのはどうだろう。
class List<T> {
void add(T t) {
...
}
T get(int index) {
...
}
if (T == String) {
String join(String sep) {
...
}
}
}
……さらに邪悪になった気がする。そして実は Python では似たようなことが出来てしまう。実行している OS の種類によってメソッドの中身を入れ替えるというテクニックを使ってるのを見たことがあるけど、あれは本当に邪悪だったのか必要悪だったのか今となってはわからん。そもそもこのやり方だとコンパイル時に静的型チェックが不可能なのでもう少し別の形でやる必要があるだろうし、考えてみれば他にこんな機構が欲しいと思ったことは一切無いんだった。
ちなみに最初に出した例がどうしても許せないという人は、次のような書き方も出来るので参考までに。この程度のコードなら、標準的な書き方にそった方がいいとは思うけど。
slist = ['aaa', 'bbb', 'ccc']
s = str.join('\t', slist) #instance.method(arg) == class.method(instance, arg)
すげーどーでもいいけど、先日実家に帰ったときの話。うちの婆さんは根っからの音楽好きで大正琴やピアノを嗜んでるんだが、どうにもこうにも俺に対して「ギター弾いてみせろ」とか言い出したんだな、これが。まあ老人の頼みぐらい聞いてやるかと思って困ったのが、俺のレパートリーの無さ。下手糞なのはこれはもう仕方が無いとしても弾ける曲が無さ過ぎ、さてどうしようかと悩んだ挙句、
どれもこれも老人に聞かせるような曲じゃねーなーと思いつつも開き直って弾いてきた。ちなみにどれも最悪な出来だったとだけ言っておこう。
あと妹二号に俺の録音した音源を聴かせたら、その残念な出来に予想通り大爆笑された。改めて聴き直すと根本から曲構成を勘違いしていてよくもまあ公開出来たもんだと自分でも不思議なのだが、まあ笑わせることが出来たから俺の勝ちだ。何を基準としての勝ち負けなのかは俺にもよくわからない。
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。