[#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:37283] 両方の式とも常に評価する論理和・論理積

From: Shinya Kawaji <kawaji@...>
Date: 2003-03-13 02:20:25 UTC
List: ruby-list #37283
かわじ、です


きっとごく簡単な事だと思うのですが、二つの式を両方とも評価した論理和・論
理積を求める簡単な方法があるのかどうか、教えていただけましたら幸いです。


例えば String クラスに、新たに「前後の空白文字(\s)を削除する」という
破壊的メソッドを追加するとします。

class String
  def s_strip!
    gsub!(/\A\s+/,'')
    gsub!(/\s+\z/,'')
  end
end

このままでは、この String#s_strip! の戻り値は、最後の式の戻り値と
同じなので、strip! や gsub! などと同様に「変更されれば self, 
変更されなければ nil」というようにしたいと思います。

class String
  def s_strip!
    gsub!(/\A\s+/,'') || gsub!(/\s+\z/,'')
  end
end

とするのはもちろん駄目で(最初の式しか評価されない場合がある)、
私の拙い知識では

class String
  def s_strip!
    tmp1 = gsub!(/\A\s+/,'')
    tmp2 = gsub!(/\s+\z/,'')
    (tmp1 or tmp2) ? self : nil
  end
end

とローカル変数を使うか、

class String
  def s_strip!
    __get_result(
      gsub!(/\A\s+/,''),
      gsub!(/\s+\z/,'')
    )
  end

  private
  def __get_result(*args)
    args.compact.empty? ? nil : self
  end
end

とのように、補助的な関数を定義する方法しか思いつきません。


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

--
Shinya Kawaji



In This Thread

Prev Next