# frozen_string_literal: true Array.class_eval do unless method_defined?(:weighted_sum) # Sums the array with each element weighing 10 times as the next. # Expects `self` to be [Array] # # @raise [RubyRailsExtensions::Errors::NonNumericError] if any element is not Numeric # # @return [Integer] # def weighted_sum each_with_index.sum do |val, index| unless Numeric === val raise( RubyRailsExtensions::Errors::NonNumericError, "Wrong element type (given #{val.class}, expected Numeric)" ) end val * (10**(size - index)) end end end end