福間@福岡 です。

記事 <200002131613.BAA04102 / pop1.ngy.3web.ne.jp> にて、
NISHIKAWA <nyasu / osk.3web.ne.jp> さんは書きました:

> 下のようなスクリプトを実行したところ、
> 300と表示されて欲しいのですが、3になります。
> ちょっと個人的にいやな感じ(失礼)なのですが、これに対して
> 「括弧を代入右辺全体に付ける」以外のごまかし方がありますでしょうか?
> 
> class Test
>   attr :test,1
> end
> 
> a=Test.new
> a.test= (1+2)*100
> p a.test

  a.test = (1+2)*100  # test と = の間に空白を入れる

とすればいいと思います。

前者はメソッド呼び出しで、括弧は引数を囲むためのものです。対して後者は
「属性参照への代入」(実際はメソッド呼び出しの構文糖)で、括弧は式の
結合順位を変更するためのものです。たった空白ひとつですが、文法的には
かなり意味が異なります。

# cf. http://www.ruby-lang.org/ja/man-1.4/syntax.html#assign

# きっと、「= の前後には常に空白を入れなさい」という、作者からの暗黙の
# メッセージでしょう:)

---
 Yasuhiro Fukuma (福間 康弘) as Yasu.F @ Kitakyushu.Fukuoka.Japan
 Web site: http://www8.big.or.jp/~yasuf/
 PGP fingerprint = 17 25 8A F3 99 E5 7E 19  C0 EA 6E 03 8A C3 CE F0
 “いちばん苦手な言語は、日本語です。”