[ruby-list:49874] Re: Rubyへの要望(願望)
From:
Nobuyoshi Nakada <nobu@...>
Date:
2014-07-12 13:26:53 UTC
List:
ruby-list #49874
(2014/07/12 21:22), MASAKI Yuhsuke wrote:
> Hi Yukihiro Matsumoto <matz@ruby.or.jp>, this is MASAKI Yuhsuke<reasonset@yahoo.co.jp>.
> I reply for your mail on Sat, 12 Jul 2014 15:20:37 +0900.
>> continue節はPythonにあるものと同じものを期待してらっしゃるの
>> でしょうか。面白いアイディアだと思って昔から考えているのです
>> が、難点はRubyの場合、ループなどはブロックを使うことを推奨し
>> ており、continue節の導入が正当に意味づけしづらいところです。
>> 同様の理由で3 part forも賛成しにくいです。むしろもっとブロッ
>> クを使って欲しいところです。
>>
> whileを使うことはほとんどないのですが、可能であればむしろブロックにcontinue節が欲しいくらいです。
> something do
> # main
> continue
> # continue
> end
> さらにいえばこれをやるならば、ブロックにrescueやensureやelseをつけられるようにしてほしいとも思います。
「ブロックにrescueやensureやelse」という提案もすでにありますが、
do...end の場合はともかく {...} では見た目上違和感が大きいという問題も
あります。
> 優先度のアクセサは
> String.encoding_priority
> String.encoding_priority=
> とか。そして、その機能がつけばguessを入れ替えるか、もしくは
> String#full_guess
> とか。さらには#force_encodeを使いたいのですが、これも名前問題がありそうなので、
> String#auto_convert(encode)
> でしょうか。
試しにgemとして実装してみてはどうでしょうか。
> 実際に遭遇したケースとしては、文字列のエスケープ処理と、文字列のエスケープ処理通過指示(verb)で、
> 通常のメソッドの形でなくsymbolを使うことでスッキリみせたい、というのがありました。
> つまり、
> ^ "Hello"
> のように書きたかったのですが、^インスタンスメソッドを定義した上でinstance_evalを呼んでもself.^を読んでくれないため、そうなりません。
> 記号が残っていない、というのは感じますが、DSLではもうちょっと書き方に自由度が欲しいな、と思うことがちょくちょくあります。
> Ruby組み込みでない(DSL処理スクリプトが処理前に展開する)マクロを書いてしまえばいいのかな、
> とは思いますけれど、それもなんだか嬉しくない気がして。
^は単項演算子にはないのでできませんが、+や~、!、~ならStringのメソッドを
refinementsで上書きすることはできます。
>> |# Kernel.syscallにStringを渡せるようにしてほしい
>> 「まんま」といわれてもちょっとわからないのですが、syscallでシ
>> ステムコールの指定を番号ではなく文字列で指定したいということ
>> でしょうか。
>>
> これも、mkfifoを楽にするために欲しいな、と思ったことですね。おっしゃるとおり、システムコール名で指定したいのです。
> 他のプラットフォームについて充分に調べられなかったため、syscallを数値で指定すると移植性に影響がでそうだ、と思いまして。
mkfifoだけでしたら、ずばりmkfifoというgemもあるようです。
>> |# next/redo/breakのターゲットを明示できるようにする
>> ちょっとよくわかりませんでした。
>>
> 次のようなケースです。
Javaのラベルと同じようなものですよね。
記法についてなにかアイディアがありますでしょうか。
> Kernel.`って文字列しかとりませんよね?argをArrayで渡したいということなのですが…
> 名称は、ベタにKernel.cmdか、あるいは分かりにくいですけど、Kernel.csubとか?
とりあえず IO.popen(cmd, &:read) ではどうでしょうか。
ちなみにIO.popenのデフォルトのモードは読み込み専用です。
> では、パーサが大変になりそうですが、
> obj ->method(arg)
->はlambdaで使用されています。
> かぶりをさけるなら
> obj <-method(arg)
> のほうがマシでしょうか。
それは obj < -method(arg) という比較式と解釈されているので、互換性の問
題があります。
> #Object.remove_module
> prependがあるのならば、モジュールを外すことができれば、一時的にメソッドを書き換えるようなことは
> スマートかつ容易に行えるように思えます。
refinementsはどうでしょうか。
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦