Project

General

Profile

Actions

Bug #3027

closed

Random#rand(nil)

Added by marcandre (Marc-Andre Lafortune) over 14 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.2dev (2010-03-03 trunk 26805) [x86_64-darwin10.2.0]
Backport:
[ruby-core:29075]

Description

=begin
Hi Nobu.

Looking at Random#rand, I notice that passing nil has the same result as not passing any argument.

Either it should raise an ArgumentError like the documentation implies, or else the documentation should be modified.

I would argue to raise an error because:

  • it is easy to pass nothing, or pass 1.0 instead, and get the same result if that is what is desired
  • it could hide an error in the code, where the result is unexpectedly nil but the programmer didn't think about it (like whiny nils in rails)
    =end
Actions #1

Updated by nobu (Nobuyoshi Nakada) over 14 years ago

=begin
Hi,

At Sun, 28 Mar 2010 09:06:57 +0900,
Marc-Andre Lafortune wrote in [ruby-core:29075]:

Looking at Random#rand, I notice that passing nil has the
same result as not passing any argument.

It comes from Kernel#rand.

Either it should raise an ArgumentError like the
documentation implies, or else the documentation should be
modified.

I would argue to raise an error because:

  • it is easy to pass nothing, or pass 1.0 instead, and get
    the same result if that is what is desired
  • it could hide an error in the code, where the result is
    unexpectedly nil but the programmer didn't think about it
    (like whiny nils in rails)

Agreed. For the backward compatibility, I'll keep Kernel#rand
and added the documentation instead.

--
Nobu Nakada

=end

Actions #2

Updated by nobu (Nobuyoshi Nakada) over 14 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
This issue was solved with changeset r27204.
Marc-Andre, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0