作者: Bruce.
日時: 2007/10/3(12:29)
Bruce.です。

「文字」と「文字列」は別物でしょう。と切り出し。

ねこ丸 writes:

>   分からなかったのはまず「文字は不変オブジェクト」ですね。
>   不便すぎて理解できない。

JavaとかJavaとかJavaとか。

>   もしや class xList(List): は List を継承しているのかもしれないけど、
> () の中に収まってるとなかなかそう見えない…。join は文字のメソッド?そ
> れ以降の分はライブラリの中に押し込めるのでなければこの書き方はきらい、
> という感じです。

Pythonの継承スタイルはそれです>カッコで囲む
まあどういう記述がいいのかはいろいろ意見があると思うので特に主張することはなく。
 

> # ライブラリの中に押し込める場合は PHP でも call_user_func(),
> # call_user_func_array() で使います。これがまた本当にユーザー定義の関数
> # しか受け付けなくて不便なのですが…。わざわざ wrapper を書いて組み込み
> # の関数を呼ばないといけない。めんどくせえ!

なーんか実装が透けて見えるなあ(笑)
あとでソースを確認してみよう。

 
> >  Rubyだと、確かはっきりしていれば括弧が外せたので、最初の例は、こんな
> > 風に書けたと思うんですが……
> > 
> > y = func4 func3 func2 func1 func0 x
> 
>   ぼかぁ () なし記法は好きじゃないので積極的には使いませんね。ただメソッ
> ドなのかプロパティなのか、みたいな区別をしっかりつけるのも面倒くさい
> (ひどい)ので、「付け忘れても動く」という Ruby のスタイルは大好きです。


irb(main):001:0> def f0(v) v*2 end
=> nil
irb(main):002:0> def f1(v) v*3 end
=> nil
irb(main):003:0> def f2(v) v*4 end
=> nil
irb(main):004:0> f2 f1 f0 1
(irb):4: warning: parenthesize argument(s) for future version
(irb):4: warning: parenthesize argument(s) for future version
=> 24

うひょ。
警告されますた。
#1.9です。

自分は、関数(メソッド)の呼び出しがネストしていなければカッコは
使わないことが多いです。が、この例のように関数の戻り値を別の関数の
引数に…のような場合にはカッコでくくります。
Perlでも。


いじょ。