[#5219] ruby for perl users — Noritsugu Nakamura <nnakamur@...>

35 messages 1997/11/09
[#5220] Re: ruby for perl users — tateishi@... (Tateishi Takaaki) 1997/11/09

立石です。

[#5224] Re: ruby for perl users — shugo@... (Shugo Maeda) 1997/11/09

前田です。

[#5243] read from subprocess — Kikutani Makoto <kikutani@...>

きくたにです。

17 messages 1997/11/10
[#5250] Re: read from subprocess — matz@... (Yukihiro Matsumoto) 1997/11/11

まつもと ゆきひろです

[#5300] Win32用の Rubyでの tkの使用 — Tomoaki Takebayashi <tota@...>

はじめまして、竹林といいます。

14 messages 1997/11/15
[#5302] Re: Win32用の Rubyでの tkの使用 — WATANABE Hirofumi <eban@...> 1997/11/15

わたなべです.

[#5303] Re: Win32 用の Rubyでの tkの使用 — Tomoaki Takebayashi <tota@...> 1997/11/15

[#5305] Re: Win32 用の Ruby での tk の使用 — aito@...5sun.yz.yamagata-u.ac.jp 1997/11/17

あ伊藤です.

[#5320] ruby 1.0-971118 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

20 messages 1997/11/18
[#5337] Re: ruby 1.0-971118 released — WATANABE Hirofumi <watanabe@...> 1997/11/19

わたなべです.

[#5340] Re: ruby 1.0-971118 released — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#5398] 配列への追加について — a-nisida@... (西田明良)

はじめまして、西田@初心者 と申します。m(..)m

16 messages 1997/11/22

[ruby-list:5284] sub

From: "Motoyuki S." <moto@...>
Date: 1997-11-13 08:44:01 UTC
List: ruby-list #5284
もと@大計といいます.
皆様はじめまして.

今までオブジェクト指向言語はおろか,perl とかも全くさわったことはなかった
のですが,今さら perl を覚えるのがしゃくだったので(^_^;),ruby の勉強を
始めました.

で,今日は sub & sub! について質問(というか,確認かな)に来ました.


現在,ruby - version 1.0-971021 on FreeBSD2.2.5R という環境にあります.
で,以下のスクリプトを走らせると,

---------------------------------------------------------------------------
#!/usr/local/bin/ruby

a = "abcdefghij"

b = a.sub("bcd","!!!")
print "a:#{a} b:#{b}\n"

b.sub!("ghi","$$$")
print "a:#{a} b:#{b}\n"
---------------------------------------------------------------------------

a:abcdefghij b:a!!!efghij
a:abcdefghij b:a!!!ef$$$j

と,意図したような結果が帰ってくるのですが,

---------------------------------------------------------------------------
#!/usr/local/bin/ruby

a = "abcdefghij"

b = a.sub("zzz","!!!")  # ここで,マッチしないようにする.
print "a:#{a} b:#{b}\n"

b.sub!("ghi","$$$") 
print "a:#{a} b:#{b}\n"
---------------------------------------------------------------------------

とすると,

a:abcdefghij b:abcdefghij
a:abcdef$$$j b:abcdef$$$j

と,b.sub! で a のほうも変更されてしまいます.

sub でパターンにマッチしないと,ポインタ(っていうのかな.C でいうポインタ)
が戻り値になるためだと思うのですが,こういうものなのでしょうか.

感覚的には,パターンにマッチしなかった場合も b = a.dup のようになって
欲しいのです.
#あらかじめ b = a.dup しておくのが正しい書き方なのかもしれませんが.


世間のスクリプト言語がどのようになっているかわからないのですが,「こういう
仕様のほうが僕の場合は感覚的に合うなぁ」というお話でした.

それでは,失礼します.


---
moto

In This Thread

Prev Next