"days=30-2.if(month==2)" a helpfull method, may be

Ask a Question related to Ruby, Design and Development.

  1. #1

    Default "days=30-2.if(month==2)" a helpfull method, may be

    Hi!

    Ruby is great. My English is not good enough to describe it.
    (I'm a Newbee, of course.)

    I guess a (may be) helpfull method for the class Numeric:

    With
    ------------------------------------
    | class Numeric |
    | def if(cond) |
    | cond ? self : 0 |
    | end |
    | end |
    ------------------------------------
    it is possible to add Numbers conditionally.

    For example:

    # -------------------------------------------------------------
    # | |
    # | [true,false].each { |leapyear| |
    # | print((leapyear ? "" :"Kein "),"leapyear\n") |
    # | 1.upto(12) { |n| |
    # | print(n, "\t", 30 + |
    # | ( n - 7.5 ).abs.ceil % 2 - |
    # | (leapyear ? 1 : 2).if( n==2), |
    # | "\n") |
    # | } |
    # | } |
    # | |
    # -------------------------------------------------------------

    What do you think? Trivial?
    Or dangerous? Because 3 * 4.if(false) --> 0 instead of 3

    Perhaps better:
    def add_sub_if(cond) cond ? self : 0 end
    def mul_div_if(cond) cond ? self : 1 end

    Fred from Wuppertal, Germany

    --
    I'm glad, if you correct my poor English.

    Fred Werne Guest

  2. Similar Questions and Discussions

    1. Can't locate object method "newFromJpeg" via package "GD::Image"
      Hi. I'm trying to execute this Perl simple script: -------- #!/usr/bin/perl use GD; my $srcimage = GD::Image->newFromJpeg("image_news.jpg");...
    2. Can't locate object method "blocking" via package "IO::Handle"
      I am receiving the error message: Can't locate object method "blocking" via package "IO::Handle" at...
    3. Can't locate object method "new" via package "Net::SMTP"
      I'm attempting to use the line: $smtp = Net::SMTP->new("mailhost.myisp.co.uk"); however it generates the error message: Can't locate object...
    4. Can't locate object method "get" via package "LWP::UserAgent"
      #!/usr/bin/perl use strict; use URI; #use HTTP::Request::Common qw(GET); use LWP; #use HTTP::Response; my $browser = LWP::UserAgent->new;...
    5. Can't not locate object method "isadmin" via package "Noc1"
      Hello all, I just added a new method called isadmin to existing and working module Noc1.pm And use this new added method in my index.html...
  3. #2

    Default Re: "days=30-2.if(month==2)" a helpfull method, may be

    On Tue, 04 Nov 2003 20:48:13 +0100, Fred Werne wrote:
    > Ruby is great. My English is not good enough to describe it.
    > (I'm a Newbee, of course.)
    Welcome to Ruby.. your english is flawless so far :-)

    [snip]
    > What do you think? Trivial?
    You mix computation and presentation. I prefer separating these
    responsibilities from each other.

    > Or dangerous? Because 3 * 4.if(false) --> 0 instead of 3
    >
    > Perhaps better:
    > def add_sub_if(cond) cond ? self : 0 end
    > def mul_div_if(cond) cond ? self : 1 end
    What your suggest reminds me of machine code.. hmmm.


    I made some modifications to your program (separated computation from
    presentation :-)

    --
    Simon Strandgaard


    server> ruby a.rb
    month normalyear leapyear
    1 31 31
    2 28 29
    3 31 31
    4 30 30
    5 31 31
    6 30 30
    7 31 31
    8 31 31
    9 30 30
    10 31 31
    11 30 30
    12 31 31
    server> expand -t2 a.rb
    class Numeric
    def if(cond)
    cond ? self : 0
    end
    end

    table = [false, true].map{ |leapyear|
    screw = leapyear ? 1 : 2
    (1..12).to_a.map{|n|
    30 + (n - 7.5).abs.ceil % 2 - screw.if(n == 2)
    }
    }

    puts "month normalyear leapyear"
    table[0].zip(table[1]).each_with_index{|(normal, leap), month|
    print "%2d %2d %2d\n" % [month+1, normal, leap]
    }
    server>
    Simon Strandgaard Guest

  4. #3

    Default Re: "days=30-2.if(month==2)" a helpfull method, may be

    On Tue, 04 Nov 2003 22:43:58 +0100, Simon Strandgaard wrote:
    > puts "month normalyear leapyear"
    > table[0].zip(table[1]).each_with_index{|(normal, leap), month|
    table.transpose.each_with_index{|(normal, leap), month|

    I should mention that Array#transpose can be used here :-)

    > print "%2d %2d %2d\n" % [month+1, normal, leap]
    > }

    --
    Simon Strandgaard
    Simon Strandgaard Guest

Posting Permissions

  • You may not post new threads
  • You may 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