Professional Web Applications Themes

Hash#values_at - Ruby

what is the rational behind this? ({}.values_at :a).empty? #=> false i would expect ({}.values_at :a) #=> nil or ({}.values_at :a) #=> [] but not the actual ({}.values_at :a) #=> [nil] there must be some reason for this, but i cannot see why returning an 'array full of nothing' is preferable to returning an 'emtpy array'... is there some way of thinking about this that will make it seem less suprising? -a -- ================================================== ============================= | EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov | PHONE :: 303.497.6469 | ADDRESS :: E/GC2 325 Broadway, Boulder, CO 80305-3328 | ...

  1. #1

    Default Hash#values_at



    what is the rational behind this?

    ({}.values_at :a).empty? #=> false

    i would expect

    ({}.values_at :a) #=> nil

    or

    ({}.values_at :a) #=> []

    but not the actual

    ({}.values_at :a) #=> [nil]

    there must be some reason for this, but i cannot see why returning an 'array
    full of nothing' is preferable to returning an 'emtpy array'... is there some
    way of thinking about this that will make it seem less suprising?

    -a
    --
    ================================================== =============================
    | EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
    | PHONE :: 303.497.6469
    | ADDRESS :: E/GC2 325 Broadway, Boulder, CO 80305-3328
    | URL :: http://www.ngdc.noaa.gov/stp/
    | TRY :: for l in ruby perl;do $l -e "print \"\x3a\x2d\x29\x0a\"";done
    ================================================== =============================

    Ara.T.Howard Guest

  2. #2

    Default Re: Hash#values_at

    Hi,

    In message "Hash#values_at"
    on 04/02/16, "Ara.T.Howard" <gov> writes:
    |
    |what is the rational behind this?
    |
    | ({}.values_at :a).empty? #=> false
    |
    |i would expect
    |
    | ({}.values_at :a) #=> nil
    |
    |or
    |
    | ({}.values_at :a) #=> []
    |
    |but not the actual
    |
    | ({}.values_at :a) #=> [nil]
    |
    |there must be some reason for this, but i cannot see why returning an 'array
    |full of nothing' is preferable to returning an 'emtpy array'... is there some
    |way of thinking about this that will make it seem less suprising?

    def values_at(*args)
    args.collect do |i|
    self[i]
    end
    end

    matz.


    Yukihiro Guest

  3. #3

    Default Re: Hash#values_at

    On Mon, 16 Feb 2004, Yukihiro Matsumoto wrote:
     

    ah. also

    irb(main):001:0> {:k=>:v}.values_at
    => []

    thanks.

    -a
    --
    ================================================== =============================
    | EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
    | PHONE :: 303.497.6469
    | ADDRESS :: E/GC2 325 Broadway, Boulder, CO 80305-3328
    | URL :: http://www.ngdc.noaa.gov/stp/
    | TRY :: for l in ruby perl;do $l -e "print \"\x3a\x2d\x29\x0a\"";done
    ================================================== =============================

    Ara.T.Howard Guest

Similar Threads

  1. iterating through hash of hash references
    By Andrew in forum PERL Beginners
    Replies: 7
    Last Post: March 3rd, 10:49 PM
  2. hash of hash of array slices
    By Paul Kraus in forum PERL Beginners
    Replies: 6
    Last Post: January 26th, 05:55 PM
  3. Sort a hash based on values in the hash stored as arrays of hashes
    By Tore Aursand in forum PERL Miscellaneous
    Replies: 3
    Last Post: September 16th, 10:14 AM
  4. Another reference question (hash of hash references)
    By Tim Musson in forum PERL Beginners
    Replies: 2
    Last Post: August 8th, 01:11 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139