[#46143] るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果 — eiichi_maekawa@...

62 messages 2009/07/02
[#46153] Re: るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果 — "NARUSE, Yui" <naruse@...> 2009/07/03

成瀬です。

[#46165] Re: に関する1.8.6→1.8.7または、1.9へのバージョンアップ — eiichi_maekawa@... 2009/07/05

前川です。

[#46281] rubyの変数の扱いについて — "前川 映一" <eiichi_maekawa@...> 2009/08/17

前川です。

[#46283] Re: rubyの変数の扱いについて — "(株)ネットフォレスト 植田裕之" <ueda@...> 2009/08/17

植田と申します。

[#46146] 文字変換 — eiichi_maekawa@...

16 messages 2009/07/03
[#46147] Re: 文字変換 — Hidetoshi NAGAI <nagai@...> 2009/07/03

永井@知能.九工大です.

[#46148] Re: 文字変換 — eiichi_maekawa@... 2009/07/03

前川です。

[ruby-list:46162] Re: メソッドArgumentのParenthesisについて

From: masayoshi takahashi <maki@...>
Date: 2009-07-04 18:55:40 UTC
List: ruby-list #46162
高橋征義です。

2009/07/04 14:05 に Shingo Hagiwara<rindou@gmail.com> さんは書きました:
> その僕が違和感を感じたコード(コード補完)とは
>
> REXML::Elementオブジェクトに対する補完でして、
> add_attributeに対しては
> element.add_attribute(key, value)
>
> と補完されます。しかし、add_elementでは
> element.add_element element, attrs
> と補完されました。共にNetbeans6.5.1です。
>
> おそらく補完データを書いた人が違うのでしょうね。
> それで流儀が違うと言うのかもしれません。

確認してみました。どうもREXML自体のソースで記法に
揺れがあるようですね。NetBeansの補完はそれを反映して
いるようです。ううむ。

> ちなみに気持ちが悪いなぁと思ってしまうのは、例えば
> p REXML::Element.new("hoge").add_element REXML::Element.new("foo")
> .parent.add_element(REXML::Element.new("bar")).parent.to_s
>
> とやると当然エラーですが、
>
> p REXML::Element.new("hoge").add_element(REXML::Element.new("foo")
> ).parent.add_element(REXML::Element.new("bar")).parent.to_s
>
> とやると当然通ります。
>
> このように意味が同じでありながら挙動が違うことに違和感を感じてしまうからです。

ええっと、これは要するに、

    foo bar arg1.buz

が、

    foo(bar(arg1.buz))

と解釈されているわけですよね? でも、Hagiwaraさんは、

    foo(bar(arg1).buz)

と解釈してほしかった、と。

とはいえ、これはやはりこうあるべきですよね。そうじゃないと、

p "abc".sub(/b/,"B")

みたいなものも、"aBc"とは表示されなくなりますから。

> なのでどうしても自分は全部括弧を補ってしまいます。

それでも、pメソッドの引数のカッコはわりと省略したりしません?
#そうでもなかったらごめんなさい。

pが普通のメソッドでありながら、カッコを省略できる、というのは、
Rubyの文法のおかげです。このおかげで、pがいまいちだからpp.rbの
ppメソッドを使う、といった時でも、同様に pp *foo* みたいな書き方が
できる訳です。この挙動は、普段はほとんどカッコをつけていても、
ここで省略できるのはうれしいと感じることもあります。

高橋征義 (takahashimm@gmail.com)

In This Thread