Issue #3591 has been updated by marcandre (Marc-Andre Lafortune).


Hi,

nobu (Nobuyoshi Nakada) wrote:
>  And, it's arguable about inexact numbers, I guess.

Agreed. divisible_by makes sense only for Integers. Float, BigDecimal, Complex... and Rational which can be exact, for them it does not make sense.

I am not convinced about the need for this. There is already `odd?` or `even?`, and for other divisors I feel usage is much less frequent.

In those cases `42 % 5 == 0` is shorter to write and faster than `42.divisible_by?(5)`. Unless we talk about big integers in which case there might be an optimization possible, but I feel that falls outside of the core of Ruby.


----------------------------------------
Feature #3591: Adding Numeric#divisor? (Have working implementation)
https://bugs.ruby-lang.org/issues/3591#change-27995

Author: duckinator (Nick Markwell)
Status: Assigned
Priority: Normal
Assignee: mrkn (Kenta Murata)
Category: 
Target version: 


=begin
 On the 'duckinator' branch of my fork of ruby on github, I have added Numeric#divisor?:
   num.divisor?(other)
 is the same as:
   (num % other == 0)
 
 Example usage:
   4.divisor?(2)     #=> true
   1.divisor?(2)     #=> false
   2.4.divisor?(1.2) #=> true
   2.4.divisor?(1.3) #=> false
   126.divisor?(9)   #=> true
 
 I think this would be a very nice feature to add, and would make code using the old (num % other == 0) method much cleaner and easier to understand.
 
 There is a unified diff of it: http://gist.github.com/raw/484144/07b1a6e696cd9301e658ccbc8f90dfcd4d4ef3f1/Numeric_divisor.patch
 
 The original commits can be seen here:
 http://github.com/RockerMONO/ruby/commit/f7959f964cb0bf38418904ccb5643db6b689d29c -- First attempt, only worked with Integers
 http://github.com/RockerMONO/ruby/commit/12376a6bb1c3ffbd4b470850dd758e2dcd783dda -- Second attempt, should work with anything derived from Numeric that can be used as (num % other == 0)
=end



-- 
http://bugs.ruby-lang.org/