in reply to What's happening in this expression?
If you need to "return multiple values," I suggest that you define a (special, just for this purpose) object with a method that can populate (in this case, four) well-defined properties. Instantiate the object, call the method, use the properties. If you try to "return a list," I find that it's just too easy to get it wrong, plus every call to the function must be manually checked every time any change is made. It is thus a very fragile construction, IMHO best to be avoided. By comparison, objects are flexible and self-descriptive.