November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Podziękowania dla Maurice’a Codika
Chcemy weryfikować spełnienie warunków narzuconych na postać argumentów wywołań metod, lecz chcemy czynić to w sposób efektywny, bez potrzeby tworzenia dużych porcji kodu.
Warunki narzucone na postać argumentów wywołania stanowią formę kontraktu między metodą wywołującą a wywoływaną. Spełnienie wymogów tego kontraktu może być weryfikowane przez poniższy moduł.
module Contracts def valid_contract(input) if @user_defined and @user_defined[input] @user_defined[input] else case input when :number lambda { |x| x.is_a? Numeric } when :string lambda { |x| x.respond_to? :to_str } when :anything lambda { |x| true } else lambda { |x| false } end end end class ...