【Perl,PHP】LLバトルロワイヤル7【Ruby,Python】at TECH
【Perl,PHP】LLバトルロワイヤル7【Ruby,Python】 - 暇つぶし2ch172:デフォルトの名無しさん
09/08/12 23:55:17
>>162
>変数展開はいつ評価するの?パース時?それとも実行時?
解析はパース時、値の評価は実行時。
つまり "foo=${foo}." というリテラルがあればパース時に "".join(("foo=", str(foo), ".")) に変換してくれればそれでいい。
#いくらなんでも、これくらいのことがわからないPython開発陣ではないだろ。162は分かってないかもしれないけど。

>gettextと組み合わさったときはどういう挙動するの?そのほかの文字列メソッドとは?
>セキュリティも怖いよね?

どれも意味不明。セキュリティって何だよ。変数の埋め込みができたらセキュリティ上問題になるのか。珍説すぎる。
自分ででっちあげた理由を、さもPythonでの公式見解みたいな言い方するのはやめて。自分だけの仮説なら、そうとわかる書き方にしようぜ。

> 結局、文字列に format() メソッドを追加するのが一番汎用的で強力。
> 変数展開は str.format() よりも限定した状況にしか対応できず、
> そんな限られた状況で 「format(vars())」 程度のタイプ数を削減するためだけに
> 言語規則を複雑にするメリットを見いだせなかったので却下された。

これソースある?実際に却下されたというソースがみたい。
それから変数を埋め込みたいのは、タイプ数削減もあるけど、わかりやすさ・読みやすさのためでもあるんだけどな。たとえば
"{0}: not found (file={1}, line={2})".format(name, file, line) より
"${name}: not found (file=${file}, line=${line})" のほうがわかりやすい。
もちろん短いことも重要。
"{name}: not found (file={file}, line={line})".format(**locals()) ← これ、いけてないよな。実行時にパースしてるから遅いし。



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch