[#33716] Re: set_path_for_r — "HAYAMA_Kaoru" <iyamatta.hayama@...>
はじめまして、葉山と申します。
[#33732] 文字列の式展開について — Masao Mutoh <mutoh@...>
むとうです。
むとうです。
たけ(tk)です。
むとうです。
たけ(tk)です。
たけ(tk)です。
[#33736] Redefinition of builtin class — Shin-ichiro HARA <sinara@...>
原です。
まつもと ゆきひろです
[#33740] Net::SMTP.start の引数 — URA Takefumi <hage@...>
浦です。
[#33762] WebDAV client — HIDAKA Takahiro <cv8t-hdk@...>
ひだかです。
こんにちは、サイトウという者です。
[#33785] NET:HTTP get2 のエラー回避 — Takashi Hoshizawa <t_hoshizawa@...>
星澤といいます。
[#33793] 右辺の値なしでも実行可能? — "井上 浩一" <kyoui32@...>
井上です。
早瀬@大阪大学基礎工学部情報科学科 です。
まつもと ゆきひろです
早瀬@阪大です。
In article <20020211224442.48d0e668.hayase@hcn.zaq.ne.jp>,
なかだです。
> > > あえて宣言文の途中で、代入前に変数の値を使った場合にエラーを出そうと思うと、
高橋征義です。
るびべん です:
At Tue, 12 Feb 2002 13:27:58 +0900,
Takaaki Tateishi <ttate@kt.jaist.ac.jp> wrote:
[#33795] Re: 右辺の値なしでも実行可能? — "井上 浩一" <kyoui32@...>
井上です。
At Fri, 8 Feb 2002 12:21:53 +0900,
[#33802] Re: 右辺の値なしでも実行可能? — "井上 浩一" <kyoui32@...>
井上です。
[#33807] Re: 右辺の値なしでも実行可能? — "井上 浩一" <kyoui32@...>
井上です。
jihg です。新入りです。
In article <000001c1b0c1$04eca980$b7d08bcb@soteccomputer>,
> Pseudo-Simplicity(擬似単純性)
Hiromasa KONISHIです。
jihg です。里谷がメダル取れたのはうれしい。開幕前の扱い悪かったから。明
坂野 正明と申します。
At Tue, 12 Feb 2002 19:14:03 +0900,
坂野 正明です。
At Wed, 13 Feb 2002 02:14:39 +0900,
[#33846] quickml サーバ — Satoru Takabayashi <satoru@...>
高林と申します
るびべん です:
まつもと ゆきひろです
るびべん です:
るびべん です:
こんにちは。鈴木教郎です。
[#33848] xxとして出し入れするメソッドの名前は? — Take_tk <ggb03124@...>
Apollo の話で恐縮なのですが、
[#33889] Ruby スクリプトサーバ + アプリと Apache+CGI アプリ — "井上 浩一" <kyoui32@...>
井上です。
[#33893] Re: Ruby スクリプトサーバ + アプリと Apache+CGI アプリ — "井上 浩一" <kyoui32@...>
井上です。
[#33906] Re: Ruby スクリプトサーバ + アプリと Apache+CGI アプリ — "井上 浩一" <kyoui32@...>
井上です。
[#33915] Re: Ruby スクリプトサーバ + アプリと Apache+CGI アプリ — "井上 浩一" <kyoui32@...>
井上です。
[#33926] 破壊的な代入について — Himuro UTO <himuro-uto@...>
ひむろ と申します。
[#33959] Re: Ruby スクリプトサーバ + アプリと Apache+CGI アプリ — "井上 浩一" <kyoui32@...>
井上です。
[#33962] Re: Ruby スクリプトサーバ + アプリと Apache+CGI アプリ — "井上 浩一" <kyoui32@...>
井上です。
[#33964] pdflib-0.7 PDF クラスの継承について — "Makoto Matsukawa" <racer-m@...>
初めて投稿します松川と申します。Rubyは初心者で
[#33966] 「たまてばこ」開発版が SecurityE rror — dellin <dellin@...>
dellinといいます。
なかだです。
西山和広です。
なかだです。
まつもと ゆきひろです
なかだです。
[#33988] FileTest.exist?("") の値の UNIX と Windows との違い — Akira Suzuki <a-suzuki@...>
鈴木です。
なかだです。
In article <200202210337.g1L3b0726778@sharui.nakada.kanuma.tochigi.jp>,
[#33994] Shell#expand_path に ~ の入ったパスを渡したとき — Hiroshi Saito <HiroshiSaito@...>
サイトウという者です。
[#33997] JOLT award — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#34006] for_fd したソケットの close — HIRATA Naoto <hirata-naoto@...>
平田といいます.
まつもと ゆきひろです
[#34015] 現在使用中の ruby.dll のパスは分かりますか?。 — Take_tk <ggb03124@...>
起動されたスクリプトの中から、そのスクリプトで使用中の ruby.dll のパスを
[#34021] localized document — HIDAKA Takahiro <cv8t-hdk@...>
ひだか%おもいきり現実逃避中です。
須賀です。
ひだかです。まとめて返事を書いてしまいます。
高橋征義です。
[#34030] Ruby Gem Box — Noritsugu Nakamura <nnakamur@...>
[#34053] 漢数字 -> 数 — TOYOFUKU Chikanobu <toyofuku@...>
豊福です。
豊福です。
# 本題と関係ありません。
池田と申します。
[#34056] ruby-dev summary — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
たけ(tk)です。
まつもと ゆきひろです
[#34087] already initialized constant — 島田喜郎 <shimada@...>
島田喜郎と申します。教えてください。
[#34107] File#pos とファイルへの書き込み位置との整合性 — 堀川 久 <vzw00011@...>
こんにちは。
In article <3c7c7245.7413%vzw00011@nifty.ne.jp>,
[#34127] singleton class and anonymous class — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[ruby-list:33927] Re: [Summary]arguments for def
坂野 正明%かっての北白川住人です。
新井さん、どうも丁寧な解説をありがとうございました。
知らなかったこと、気づかなかったことがたくさん出てきて、
大変勉強になりました。
斉藤さん、フォローを、特に make_clones() をありがとうございました。
binding を使うと、eval でうまく実現できちゃうんですねぇ。感心しました。
以下、少しだけ工夫を加えてみました。
def make_clones( bind, names )
#names.split( "[, ]+" ).each do | name |
names.gsub(/[*&]/,'').split( "[, ]+" ).each do | name |
#eval( "#{name} = #{name}.clone", bind )
eval( "#{name} = #{name}.clone rescue nil", bind )
end
end
原さん、ポインタをありがとうございます。そのスレッドを早速拝見しました。
# 議論が爆発してますね (@_@)
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/21267
に示されているように、「網(network)」のクラス図の構築には、現在の
仕様(それこそオブジェクト指向というべきなんですか?)が必須なんですね。
# もっとも、複雑過ぎて私の理解を超えるので、自分でそういうクラスを
# 作ることはないと思いますけど (^^;
あと、(アーカイブの)議論の中で気づいた点を二点。
.clone は、オブジェクト自体をコピーするけれど、オブジェクトが指し示す
他のオブジェクトまで再帰的にコピーするわけではないんですね(!)。
# .clone って使った経験がほとんどなかったので気づきませんでした。
irb(main):035:0> x="ABC"
"ABC"
irb(main):036:0> x.id
67542462
irb(main):037:0> e=[x]
["ABC"]
irb(main):038:0> f=e.clone
["ABC"]
irb(main):039:0> [e.id,f.id,e[0].id,f[0].id]
[67536372, 67532862, 67542462, 67542462]
=> x, e[0], f[0] は、"equal"
ということは、特に、多重配列とかになると、 .clone のありがたみは
ほとんどなさそうですね。
もう一点は、土岐仁謙さんの御投稿の
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/21302
name = name.dup
name.sub! (....)
は、なるほど、と思いました。これだと、色々考えなくていいですね。
# あくまで破壊的メソッドを使う場合の(私にとっての)一般論です。sub の
# 場合に限れば、name = name.sub(....) で十分ですし、また、あえて破壊的
# メソッドを使う必要がある場合は実はそう多くない、とも思いますが。
いずれにせよ、初級者(当然私も含みます ^^;)には、lint みたいなもので、
破壊的メソッドを使っているかどうかをちゃんと外部からチェックできれば
ありがたい、と感じます。(初級者には)ちょっと見つけにくいバグになる
でしょうから。
というわけで、jihg さん、御投稿をありがとうございます。
簡単に試してしてみたところ、いい感じですね。String, Array,
Hash について簡単なチェックができるので、実用的に使えそうです。
いくつか不完全(?)のところがあるように思ったので、以下のように
いくつか書き換えてみましたが、いかがでしょう?
○=制約
def abc (a)
b=a
b.xxx!
は検出できませんね(多重代入まで考えるともっと複雑!)。
○def x (a,*b,&c) にも対応させました。
他、いくつか。
皆様への御礼を兼ねて、先ほどの Summary の改定版を準備中です。
できれば明日(もしくは週明け…)投稿します。
--------------
さかのまさあき
# jihg さんのスクリプトに対する
#-------------- patch ------------
*** lintdef.rb Thu Feb 14 19:15:08 2002
--- lintdef.new.rb Thu Feb 14 19:15:56 2002
***************
*** 8,11 ****
--- 8,13 ----
line.scan(/(?:^|\s+|;)def\s+.+?\((.*?)\)/i) do |s|
sRE = (s[0].split(/\s*,\s*/)).each do |ss|
+ next if /^\s*\&/ =~ ss
+ ss.sub!(/^\s*\*/,'')
ss.gsub!(/(.+?)\s*(?:$|=.*)/){ $1 }
end.join("|")
***************
*** 15,25 ****
\.
(?:
! (?:\w+!|replace)
! |(?:push|unshift|pop|shift|concat|clear|fill)
! |(?:store|delete(?:_if)?|update)
)
- \b
)
! |(?:\s*(?:<<|\+=))
|(?:\[.+?\]\s*=\s*)
)
--- 17,29 ----
\.
(?:
! (?:
! (?:replace)
! |(?:push|unshift|pop|shift|concat|clear|fill)
! |(?:store|delete(?:_if|_at)?|update)
! )
! \b|\w+!
)
)
! |(?:\s*(?:<<))
|(?:\[.+?\]\s*=\s*)
)
***************
*** 39,43 ****
row += 1
end
! print "(#{count})count."
end
--- 43,47 ----
row += 1
end
! puts "(#{count})count."
end
#-------------- 修正されたスクリプト ------------
flnm = ARGV.shift
open(flnm ,"r") do |flh|
row = 1
count = 0
re = nil
reEnd = nil
while line = flh.gets
line.scan(/(?:^|\s+|;)def\s+.+?\((.*?)\)/i) do |s|
sRE = (s[0].split(/\s*,\s*/)).each do |ss|
next if /^\s*\&/ =~ ss
ss.sub!(/^\s*\*/,'')
ss.gsub!(/(.+?)\s*(?:$|=.*)/){ $1 }
end.join("|")
re = /[^\w@](#{sRE})
(?:
(?:
\.
(?:
(?:
(?:replace)
|(?:push|unshift|pop|shift|concat|clear|fill)
|(?:store|delete(?:_if|_at)?|update)
)
\b|\w+!
)
)
|(?:\s*(?:<<))
|(?:\[.+?\]\s*=\s*)
)
/x
sREEnd = line.scan(/\s*/)[0]
reEnd = /^#{sREEnd}end\b"/
end
unless re.nil?
line.scan(re) do |sArg|
print "warning : #{flnm}(#{row})---" +
" 引数 #{sArg} に対し破壊的な操作をしています。" +
"'#{line.scan(/(.*?)(?:\r\n|\r|\n)/)}'\n"
count += 1
end
re = nil if reEnd =~ line
end
row += 1
end
puts "(#{count})count."
end
#Version 2002.2.13 -> 14?
#-------------- ここまで ------------