Named Records

Named Records

About

  • Field Names make records self-documenting
  • Can mix positional and named fields
  • Type inference works with named fields
  • Better readability than positional records

Main Topics

  1. Basic Syntax

    • Definition: Colon-separated name-value pairs
    • Example:
      var user = (name: 'Alice', age: 30);
  2. Type Annotations

    • Definition: Explicit named record types
    • Example:
      ({String name, int age}) getUser() {
        return (name: 'Bob', age: 25);
      }
  3. Accessing Fields

    • Definition: Dot notation access
    • Example:
      var person = getUser();
      print(person.name); // 'Bob'
      print(person.age);  // 25

How to Use

  • API Design: Return clearly named data
  • Configuration: Group related settings
  • Data Transfer: Between function calls

How It Works

  1. Type Safety: Field names are part of type
  2. Memory: Same efficiency as positional
  3. Patterns: Work with all pattern features

Example:

({double lat, double lng}) getLocation() {
  return (lat: 47.6062, lng: -122.3321);
}

void main() {
  var location = getLocation();
  print('Latitude: ${location.lat}');
}

Conclusion

Named records bring clarity to data grouping by labeling fields while maintaining all the performance benefits of positional records. They’re particularly valuable when field meanings aren’t obvious from position alone.