擅长:python、mysql、java
<p>一些语言,特别是Lisp和JavaScript,有一个称为destructuring assignment或destructuring bind的特性。这本质上是类固醇上的元组解包:您可以在赋值语句中解包更复杂的对象结构,而不局限于元组、列表或生成器等序列。有关详细信息,请参见<a href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_destructuring-bind.html" rel="noreferrer">here for the Lisp version</a>或<a href="https://developer.mozilla.org/en/New_in_JavaScript_1.7#Destructuring_assignment" rel="noreferrer">here for the (rather more readable) JavaScript version</a>。</p>
<p>除此之外,我不知道通常处理多个返回值的许多语言特性。但是,多个返回值有一些特定的用法,这些用法通常可以被其他语言特性所替代。例如,如果其中一个值是错误代码,则最好将其替换为异常。</p>
<p>虽然创建新的类来保存多个返回值感觉很混乱,但同时返回这些值的事实往往表明,一旦创建了类,您的代码总体上将会更好。特别是,处理相同数据的其他函数可以移到新类中,这可能使代码更易于遵循。这并非普遍正确,但值得考虑。(Cpeterso关于数据块的回答更详细地表达了这一点)。</p>