Skip to content

Methods

datanorris edited this page Jan 1, 2016 · 47 revisions

Key characteristics of Ruby methods:

  • They are defined on a class or a module
  • They are defined at runtime e.g. by the def statement or by calling the Module.define_method method
  • Methods can also be redefined, removed or undefined
  • Method calls are invoked on an object, and resolved at runtime using a "message-passing" paradigm - at the time of method call, the object's class and its ancestor classes are searched until one is found which has the method defined on it
  • A method's "signature" is just its name - there is no overloading to allow method calls on the same method with different arguments to be resolved to different implementations
  • They have powerful and flexible options for passing arguments
  • The name of a method can be an operator, such as +, in order to define the behaviour of the operator for a class/module

#Method names A method name may be:

  • Any combination of "identity characters" (i.e. alphanumeric, _ or non-ASCII characters), as long as it doesn't begin with a digit
  • The name can be one of Ruby's 41 reserved words (e.g. class), but there are restrictions on what syntax you can use to call it
  • The name may begin with an uppercase letter (which is a name normally interpreted as a constant), but there are restrictions on what syntax you can use to call it
  • One of the following operators: | (binary bitwise or) ^ (binary bitwise xor) & (binary bitwise and) <=> (comparison operator) == (equal to) === (case expression match) =~ (match) !~ (not match) > (greater than) >= (greater than or equal to) < (less than) <= (less than or equal to) != (not equal to) << (bitwise left shift) >> (bitwise right shift) + (binary plus) - (binary minus) * (multiply) / (divide) % (modulus) ** (power) ! (boolean unary not) ~ (complement)
  • One of the following tokens +@ (defines unary plus e.g. +value) -@ (defines unary minus e.g. -value) [] (defines array reference get e.g. value[1]) []= (defines array reference set e.g. value[1] = 'hello') ` (defines processing of backquote literal) !@ (same as !) ~@ (same as ~)

Method signature and resolution Method missing Method invocation styles (method & command call) Method formal arguments Method call arguments Permitted method names Undefining Blocks and block arguments send()

Clone this wiki locally