Wiki
Version 3 (modified by hopscc, 11 years ago)

--

Type Extensions

Extend an existing type with additional method(s).

Grammar

extend EXISTINGTYPE
   def ADDMETHOD
       ...
   ....

Example

extend String

    def doubleLength as int
        return .length * 2

    def capitalized as String
    """
    Returns the string with the first character capitalized.
    Returns a blank string for a blank string.
    """
    ensure
        result.length == .length
        result.length implies result[0] == result[0].toUpper
    test
        assert 'chuck'.capitalized == 'Chuck'
        assert 'Chuck'.capitalized == 'Chuck'
        assert ''.capitalized == ''
        assert ' foo'.capitalized == ' foo'
        assert 'f'.capitalized == 'F'
        assert '1aoeu'.capitalized == '1aoeu'
    body
        if .length == 0, return this
        return this[:1].toUpper + this[1:]

Restrictions

You can use extension methods to extend a class or interface, but cannot override existing matching methods.

See also: StandardLibraryExtensionMethods, LanguageTopics