[#43157] Exerb 4.1.0とswin060205でアプリケーションエラー — UMESHIMA Shingo <shin5home@...>
はじめまして。梅島と申します。
8 messages
2007/02/03
[#43159] Re: Exerb 4.1.0とswin060205でアプリケーションエラー
— arton <artonx@...>
2007/02/05
artonです。
[#43167] CGIで受け取ったデータをファイルに書き込む際のエラー — "CXP04754@..." <cxp04754@...>
始めて投稿します、ぱんと申します。
6 messages
2007/02/08
[#43176] [ANN] Ruby-GNOME2 Win32 GUI Installer — Masao Mutoh <mutoh@...>
むとうです。
1 message
2007/02/12
[#43181] 文字列の分割について — Tomo <iwasaiwasa2000@...>
正規表現を使用し以下のように文字列を分割したいのですが
11 messages
2007/02/13
[#43182] Re: 文字列の分割について
— rubikitch@...
2007/02/13
From: Tomo <iwasaiwasa2000@yahoo.co.jp>
[#43183] Re: 文字列の分割について
— seuzo <ym3s-ickw@...>
2007/02/13
せうぞーです。
[#43184] 日本語入力 Ruby/Tk MacOSX
— 上間 健 <mugenkai15@...>
2007/02/14
こんばんは
[#43185] Re: 日本語入力 Ruby/Tk MacOSX
— Hidetoshi NAGAI <nagai@...>
2007/02/15
永井@知能.九工大です.
[#43191] ActiveTclのインストール — HIiroshi Kasamatsu <qqmn89yb9@...>
こんにちは、笠松と申します。
13 messages
2007/02/17
[#43193] Re: ActiveTclのインストール
— Hidetoshi NAGAI <nagai@...>
2007/02/18
永井@知能.九工大です.
[#43198] Re: ActiveTclのインストール
— HIiroshi Kasamatsu <qqmn89yb9@...>
2007/02/18
永井さん、アドバイスありがとうございます。
[#43200] Re: ActiveTclのインストール
— Hidetoshi NAGAI <nagai@...>
2007/02/18
永井@知能.九工大です.
[#43202] Re: ActiveTclのインストール
— HIiroshi Kasamatsu <qqmn89yb9@...>
2007/02/19
永井さん、何度もありがとうございます。笠松です。
[#43203] Re: ActiveTclのインストール
— Hidetoshi NAGAI <nagai@...>
2007/02/19
永井@知能.九工大です.
[#43217] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.6 preview2 をリリースしました。
13 messages
2007/02/24
[#43235] Re: Ruby 1.8.6 preview2 has been released
— Masateru Yoshikawa <yoshikawa.masat@...>
2007/02/28
吉川と申します。
[#43236] Re: Ruby 1.8.6 preview2 has been released
— "Akinori MUSHA" <knu@...>
2007/02/28
At Wed, 28 Feb 2007 10:10:09 +0900,
[#43221] cloneというメソッドの機能について(質問) — "yahata hisashi" <yahatah@...>
cloneについての質問です。
6 messages
2007/02/26
[ruby-list:43154] Re: 配列は、メソッド呼出における引数初期化の例外なんでしょうか
From:
<s-matsu@...>
Date:
2007-02-02 01:24:19 UTC
List:
ruby-list #43154
松谷と申します。
変数が参照している「オブジェクトそのもの」を書き換えるかどうか、
(破壊的かどうか)がポイントのようですね。
便宜上、henkanの引数を
h_ary,h_str
とします。
def henkan(h_ary, h_str)
p [21, h_str, h_ary]
h_ary.shift
h_str = "new"
p [22, h_str, h_ary]
end
関数呼び出し直後には
ary → ["(", "{"] ← h_ary
str → "old" ← h_str
のように関数の外の変数と関数内の変数は同じオブジェクト
を参照した状態になります。
ここで、
h_ary.shift
の操作を行うと、h_aryが参照する「オブジェクトそのもの」が変化します。
ary → ["{"] ← h_ary
それに対し、
h_str = "new"
の操作では、「オブジェクトそのもの」は変化せず、h_strの参照先が変わります。
str → "old" h_str → "new"
このような動作の違いは、対象がArrayか文字列かによるわけでは
なく、対象に対する操作が破壊的かどうかによります。
ary.shiftは破壊的ですが、代入(str=)は破壊的でないのです。
ここで、文字列を破壊的に書き換えることもできます。
ruby自体は初心者なのでちょっと自信は無いですが、
以下のような方法で実現できます。
def henkan(h_ary, h_str)
p [21, h_str, h_ary]
h_ary.shift
h_str[h_str] = "new"
p [22, h_str, h_ary]
end
str = "old"; ary = ["(", "{"]
p [11, str, ary]
henkan(ary, str)
p [19, str, ary]
--------------------------------
[11, "old", ["(", "{"]]
[21, "old", ["(", "{"]]
[22, "new", ["{"]]
[19, "new", ["{"]]
>Masouです。
>2度目です。すみません。
>
>> 再帰でメソッドを呼び出して、そのメソッドがローカル変数(や引
>> 数)を書き換えても、その変更は呼び出し元には影響を与えません。
>> ローカル変数や引数はメソッド呼び出しごとに初期化される独立し
>> た存在です。ですから、これは「正しい」動作ですね。
>
>文字列は初期化されますが、Arrayは初期化されず、
>書換えた結果が呼び出し元に返されてます。
>
>[テストプログラムです。] -------
>def henkan(ary, str)
> p [21, str, ary]
> ary.shift
> str = "new"
> p [22, str, ary]
>end
>
>str = "old"; ary = ["(", "{"]
>p [11, str, ary]
>henkan(ary, str)
>p [19, str, ary]
>
>[結果です] ------------
>[11, "old", ["(", "{"]]
> [21, "old", ["(", "{"]]
> [22, "new", ["{"]]
>[19, "old", ["{"]]
>
>配列の場合には、初期化されてないようにみえます。
>レファレンスも読んだんですがよく解からなくて
>質問させていただきました。
>よろしくお願いします。
>
>ttp://masou.blogspot.com/
>
>
>
>
>