Project

General

Profile

Actions

Bug #1215

closed

irb doesn't finish evaluate on !false => false

Added by no6v (Nobuhiro IMAI) about 15 years ago. Updated almost 13 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2dev (2009-02-25 trunk 22626) [i686-linux]
Backport:
[ruby-dev:38087]

Description

=begin
$ irb1.9 -f
irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 1.9.2dev (2009-02-25 trunk 22626) [i686-linux]"
irb(main):002:0> false
=> false
irb(main):003:0> false.define_singleton_method(:!){p "!false"; false}
=> #<Proc:0x8dd716c@(irb):3 (lambda)>
irb(main):004:0> false
"!false"
"!false"
irb(main):005:0>
irb(main):006:0*
irb(main):007:0*
irb(main):008:0* irb(main):008:0> => false

!false が false を返すような状況だと、irb が式を評価した結果を返さないようです。
手元では、^D を何度か押すと評価した結果が返りました。上の例では、005 から 007 までは
Enter を、008 のところでは ^D を 2 回入力しています。

るりまには、

主に論理式の評価に伴って副作用を引き起こすことを目的に
再定義するものと想定されています。

と書かれているので、バグと言えるのかは微妙な気もしますが、
irb 側で何とかならないものでしょうか?
=end

Actions #1

Updated by matz (Yukihiro Matsumoto) about 15 years ago

  • Status changed from Open to Rejected

=begin

=end

Actions #2

Updated by matz (Yukihiro Matsumoto) about 15 years ago

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:38087] [Bug #1215] irb doesn't finish evaluate on !false => false"
on Thu, 26 Feb 2009 10:02:45 +0900, Nobuhiro IMAI writes:

|!false が false を返すような状況だと、irb が式を評価した結果を返さないようです。
|手元では、^D を何度か押すと評価した結果が返りました。上の例では、005 から 007 までは
|Enter を、008 のところでは ^D を 2 回入力しています。
|
|るりまには、
|
|> 主に論理式の評価に伴って副作用を引き起こすことを目的に
|> 再定義するものと想定されています。
|
|と書かれているので、バグと言えるのかは微妙な気もしますが、
|irb 側で何とかならないものでしょうか?

無理でしょうね。falseのような基本的なオブジェクトの!を再定義
した場合でも正当に動作するプログラムを記述することは困難です。
そんな負担をライブラリ作者に負わせたくありません。!の再定義
はあくまでも自己責任で。

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0