[#37249] ruby 1.8でのCGI#[]の挙動 — 堀川 久 <vzw00011@...>

こんにちは。

14 messages 2003/03/09

[#37283] 両方の式とも常に評価する論理和・論理積 — Shinya Kawaji <kawaji@...>

かわじ、です

17 messages 2003/03/13

[#37324] optparse は使いやすいですか? — 成島 寛則 <narushima@...>

こんにちは。Narushima Hironori と申します。

13 messages 2003/03/15

[#37370] Secure「ではない」script の書き方 — satoru takahashi <hisai@...>

高橋聡@JFプロジェクトで翻訳しています、です

50 messages 2003/03/20
[#37381] Re: Secure「ではない」script の書き方 — satoru takahashi <hisai@...> 2003/03/20

高橋聡です

[#37382] Re: Secure「ではない」script の書き方 — matz@... (Yukihiro Matsumoto) 2003/03/20

まつもと ゆきひろです

[#37405] Re: Secure「ではない」script の書き方 — Taku Nakajima <tnakajima@...> 2003/03/24

[#37407] Re: Secure「ではない」script の書き方 — matz@... (Yukihiro Matsumoto) 2003/03/24

まつもと ゆきひろです

[#37414] Re: Secure「ではない」script の書き方 — Taku Nakajima <tnakajima@...> 2003/03/25

[#37415] Re: Secure「ではない」script の書き方 — matz@... (Yukihiro Matsumoto) 2003/03/25

まつもと ゆきひろです

[#37417] Re: Secure「ではない」script の書き方 — Taku Nakajima <tnakajima@...> 2003/03/25

[#37421] Tmpfile.newがデフォルトで/tmpを利用すること — Tadatoshi Kamimura <kamimura.tadatoshi@...>

上村と申します。はじめまして。

35 messages 2003/03/26
[#37422] Re: Tmpfile.newがデフォルトで/tmpを利用すること — WATANABE Hirofumi <eban@...> 2003/03/26

わたなべです。

[#37467] Re: Tmpfile.newがデフォルトで/tmpを利用すること — Tadatoshi Kamimura <kamimura.tadatoshi@...> 2003/03/31

上村です

[#37468] Re: Tmpfile.newがデフォルトで/tmpを利用すること — "Akinori MUSHA" <knu@...> 2003/03/31

At Mon, 31 Mar 2003 09:51:27 +0900,

[#37470] Re: Tmpfile.newがデフォルトで/tmpを利用すること — Tadatoshi Kamimura <kamimura.tadatoshi@...> 2003/03/31

上村です。

[#37472] Re: Tmpfile.newがデフォルトで/tmpを利用すること — "Akinori MUSHA" <knu@...> 2003/03/31

 なるほど、 $SAFE=1 のところをすっぱり読み飛ばしてました。

[#37479] Re: Tmpfile.new がデフォルトで/tmpを利用すること — siena@... (Siena. / SHINAGAWA, Norihide) 2003/03/31

Siena. です。

[#37480] Re: Tmpfile.new がデフォルトで/tmpを利用すること — siena@... (Siena. / SHINAGAWA, Norihide) 2003/03/31

Siena. です。

[#37483] Re: Tmpfile.newがデフォルトで/tmpを利用すること — nobu.nakada@... 2003/04/01

なかだです。

[#37493] Re: Tmpfile.newがデフォルトで/tmpを利用すること — TAKAISHI Hayato <rio-t@...> 2003/04/02

こんにちは、高石です。

[#37496] Re: Tmpfile.new がデフォルトで/tmpを利用すること — siena@... (Siena. / SHINAGAWA, Norihide) 2003/04/03

Siena. です。

[#37499] Re: Tmpfile.new がデフォルトで/tmpを利用すること — matz@... (Yukihiro Matsumoto) 2003/04/03

まつもと ゆきひろです

[#37500] Re: Tmpfile.new がデフォルトで/tmpを利用すること — "U.Nakamura" <usa@...> 2003/04/03

こんにちは、なかむら(う)です。

[ruby-list:37289] Re: 両方の式とも常に評価する論理和・論理積

From: Shinya Kawaji <kawaji@...>
Date: 2003-03-13 04:14:18 UTC
List: ruby-list #37289
かわじ、です。


> > きっと何か簡単な方法があるかと思うのですが、一般的に、二つの式を常に
> > 両方とも評価して、その論理和や論理積を求める方法は他にありますでしょ
> > うか?
> 
>   C 言語や Java と同じく、 | を使います。

ありがとうございます。

おっと、こんな単純なものがあったのだな、と思いましたが、
この | は NilClass, FalseClass, TrueClass などに定義されているメソッド
なので、今回の場合には String クラスにも定義する必要がありそうです。

>> class String
>>   def s_strip!
>>     gsub!(/\A\s+/,'') | gsub!(/\s+\z/,'')
>>   end
>> end
=> nil
>> "\n abc \t\r\n".s_strip!
NameError: undefined method `|' for "abc":String
        from (irb):3:in `s_strip!'
        from (irb):6
>> class String
>>   def |(other)
>>     self
>>   end
>> end
=> nil
>> "\n abc \t\r\n".s_strip!
=> "abc"


また、NilClass#| は、true or false を返しますので、(表題の「論理和・
論理積」を求める、という意味においてはそれで十分に正しいのですが)、
今回のように nil を返したいということであれば、もう一工夫必要でした。

# nil の代わりに false が返ってきても、実際にはほぼ影響ないのですが。

>> "abc".s_strip!
=> false
>> class String
>>   def s_strip!
>>     gsub!(/\A\s+/,'') | gsub!(/\s+\z/,'') || nil
>>   end
>> end
=> nil
>> "abc".s_strip!
=> nil


String#| を定義しなくて済む方法を考えようと思ったのですが、
それには任意のオブジェクトを(条件式外のところで) true or false に
変換する機能が必要なように思いました。
そういう仕組みもまた、思い出せないのですが・・(でもきっとあるんだろうな)

>> class Object
>>   def boolean
>>     self ? true : false
>>   end
>> end
=> nil
>> class String
>>   def s_strip!
>>     gsub!(/\A\s+/,'').boolean | gsub!(/\s+\z/,'').boolean ? self : nil
>>   end
>> end
=> nil
>> "\n abc \t\r\n".s_strip!
=> "abc"
>> "abc".s_strip!
=> nil


nil? を使うと以下のようにも(これは余計なものを何も定義しなくて済む)。

class String
  def s_strip!
    gsub!(/\A\s+/,'').nil? & gsub!(/\s+\z/,'').nil? ? nil : self
  end
end


しかし、String#| を使うのが、一番単純かもしれませんね。
ありがとうございました。

--
Shinya Kawaji



In This Thread