[#36239] ar=[];ar[0]+=2でエラー — Masahiro Sato <msato@...>

142 messages 2002/11/01
[#36240] Re: ar=[];ar+=2でエラー — SAITO Shukaku <shukaku@...> 2002/11/01

At Fri, 1 Nov 2002 17:50:11 +0900,

[#36241] NET:::HTTPで教えてください — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/01

金光です。どもっ。

[#36244] Re: NET/HTTPで教えてください — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/01

金光です。お世話になります。

[#36247] Re: NET/HTTPで教えてください — rubikitch <rubikitch@...> 2002/11/01

From: 金光雅夫 (KANEMITSU Masao) <masao-k@a-net.email.ne.jp>

[#36250] Re: NET/HTTPで教えてください — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/01

金光です。どもっ。

[#36252] Re: NET/HTTPで教えてください — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/01

金光です。困惑

[#36242] Re: ar=[];ar+=2 でエラー — Nakamura Akifumi <BXQ04723@...> 2002/11/01

[#36263] Re: ar=[];ar+=2でエラー — Fujimaru Hiroyasu <f-hiro@...> 2002/11/02

 藤丸です。

[#36278] Re: ar=[];ar+=2でエラー — Kazuhiro NISHIYAMA <zn@...> 2002/11/03

西山和広です。

[#36279] Re: ar=[];ar+=2でエラー — Fujimaru Hiroyasu <f-hiro@...> 2002/11/03

 藤丸です。

[#36281] Re: ar=[];ar+=2でエラー — Kenta MURATA <muraken2@...> 2002/11/03

むらけんです.

[#36282] Re: ar=[];ar+=2でエラー — HIDAKA Takahiro <cv8t-hdk@...> 2002/11/03

 ひだかです。結構現状追認系の意見も多いみたいですが・・

[#36290] Re: ar=[];ar+=2でエラー — MORITA Naoyuki <naohaq@...> 2002/11/03

森田と申します。

[#36304] Re: ar=[];ar+=2でエラー — 堀川 久 <vzw00011@...> 2002/11/03

こんにちは。

[#36310] Re: ar=[];ar+=2でエラー — WATANABE Hirofumi <eban@...> 2002/11/03

わたなべです。

[#36311] Re: ar=[];ar+=2でエラー — 堀川 久 <vzw00011@...> 2002/11/03

こんにちは。

[#36315] Re: ar=[];ar+=2でエラー — matz@... (Yukihiro Matsumoto) 2002/11/03

まつもと ゆきひろです

[#36316] Re: ar=[];ar+=2でエラー — Tanaka Akira <akr@...17n.org> 2002/11/03

In article <1036352263.849985.17004.nullmailer@picachu.netlab.jp>,

[#36317] Flyaway — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/04

金光といいます。質問させてください。

[#36318] Re: Flyaway — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/04

添付ファイルが落ちてましたすみません。

[#36319] Re: Flyaway — Masatoshi SEKI <m_seki@...> 2002/11/04

[#36320] Re: Flyaway — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/04

金光です。咳さん、どもっ。

[#36321] Re: Flyaway — Masatoshi SEKI <m_seki@...> 2002/11/04

咳といいます。

[#36322] Re: Flyaway — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/04

金光です。どもっ。あとすこし

[#36344] Re: ar=[];ar+=2でエラー — WATANABE Hirofumi <eban@...> 2002/11/04

わたなべです。

[#36347] Re: ar=[];ar+=2でエラー — Tanaka Akira <akr@...17n.org> 2002/11/04

In article <20021104160723.757540.eban@os.rim.or.jp>,

[#36367] Re: ar=[];ar+=2でエラー — matz@... (Yukihiro Matsumoto) 2002/11/05

まつもと ゆきひろです

[#36383] Re: ar=[];ar+=2でエラー — Tanaka Akira <akr@...17n.org> 2002/11/07

In article <1036531761.901892.25889.nullmailer@picachu.netlab.jp>,

[#36386] Re: ar=[];ar+=2でエラー — matz@... (Yukihiro Matsumoto) 2002/11/07

まつもと ゆきひろです

[#36394] Re: ar=[];ar+=2でエラー — Tanaka Akira <akr@...17n.org> 2002/11/07

In article <1036640262.362098.10433.nullmailer@picachu.netlab.jp>,

[#36371] クラス変数をクラスメソッドから参照する — Takashi Kanai <kanai@...4u.or.jp>

こんにちは、金井です。

14 messages 2002/11/06

[#36532] Linux Magazine Ruby初等講座 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

19 messages 2002/11/19

[#36563] [ANN] Ruby/Cache 0.2 — "Yoshinori K. Okuji" <okuji@...>

Ruby/Cache 0.2をリリースしました。Ruby/Cacheは、LRUアルゴリズムに基い

20 messages 2002/11/22

[#36612] 全角文字に挟まれた半角スペースを削除するには? — Take_tk <ggb03124@...>

16 messages 2002/11/28
[#36614] Re: 全角文字に挟まれた半角スペースを削除するには? — WATANABE Tetsuya <tetsu@...> 2002/11/28

渡辺哲也です。

[#36617] Re: 全角文字に挟まれた半角スペースを削除するには? — Take_tk <ggb03124@...> 2002/11/28

たけ(tk)です

[ruby-list:36287] Re: ar=[];ar+=2でエラー

From: Minero Aoki <aamine@...>
Date: 2002-11-03 04:49:22 UTC
List: ruby-list #36287
あおきです。

  In mail "[ruby-list:36279] Re: ar=[];ar+=2でエラー"
    Fujimaru Hiroyasu <f-hiro@eweb.co.jp> wrote:

>  藤丸です。

> > 初期化されていないローカル変数はnilです。

>  これが通るという事で、「初期化されていないローカル変数はnil」という言い
> 方もわかるのですが、しかし、そういう言い方をした時に、代入前だと
>
> if v==nil
> やら
> if v.nil?
> 
>  がエラーになるのは微妙に気持ち悪くないですか?

二点誤解があると思います。

1.
Ruby には明示的な変数定義がないのですが、実は「定義」と
「代入」が厳密に存在します。定義されていない変数を参照する
とエラーです。定義された、しかし代入されていない変数を参照
するとオブジェクト nil が返ります。

インスタンス変数やグローバル変数では、あらゆる変数名が
前もって定義されているかのように扱えます。つまりどんな
変数でもいきなり参照できます。

クラス変数は最初の代入が定義を兼ねます。だから、代入前に
参照すると (未定義なので) エラーになります。

ローカル変数は代入を「書いた」ところで定義されます。だから
(ソースコード上で) 代入を書く前に参照を書くと (未定義なので)
エラーになります。


2.
nil? はメソッドです。メソッドはオブジェクトに対して呼ぶもの
であって、変数に対して呼ぶものではありません。変数に代入した
オブジェクトに対してメソッドを呼ぶときは、以下のように手順が
きっぱり別れています。

  # コード例
  lvar = "str"
  lvar.upcase

  # 手順
  1. ローカル変数lvarを参照する。
  2. 1.の結果に対してメソッドupcaseを呼ぶ。

エラーが出ているのは 1. の段階ですから、それと 2. の話を混ぜる
のは混乱の元です。


つまり、undefined_lvar.nil? が真になるべき、という意見が
論理的であるためには、

  * 1.を変える。即ち「ローカル変数の定義」の定義を変える

  * 2.を変える。即ち nil? をメソッドでなくすか、
    メソッドは変数に対して働きかけるとする

のどちらかでなければいけません。しかし 2. は論外です。言語仕様が
完全に壊れてしまうからです。1. はそれなりにありえると思いますが、
互換性はなくなるので安易には変えられないでしょうね。
-------------------------------------------------------------------
青木峰郎

In This Thread