How should I read values from multi-field's subfield? I'd like to access values stored in a Multifield programmatically. I use a Computed Field to do some calculations based on these values. 

My current solution utilizes field_get_items(... ,'my_multifield') which returns a data structure containing an array of (sub)fields. Of course, I could extract values from that data, but I wonder if there is a better solution. 

I took a look at the multifield source code, especially the tests, but I could not figure it out. What is the intended method for reading values from multi-fields?
field_get_items() is the only function provided by core to help with this.

The Entity module provides the EntityMetadataWrapper class, though, which makes these things a bit more palatable. E.g.

$node_wrapper = entity_metadata_wrapper('node', $node);
try {
  foreach ($node-&gt;field_my_field as $item) {
    $val = $item-&gt;value-&gt;value();
  }
}
catch (\EntityMetadataWrapperException $e) {
  // Recover...
}


That's about the simplest example there is, it would be worth reading the docs to find out how else you can use it.