首页 > 解决方案 > 帕斯卡中有类似 Rust 的元组吗?

问题描述

Rust 的元组允许保存多个值的匿名、打包、堆栈分配的数据结构。

例子:

let (a, b) = returns_tuple(); // fn returns_tuple() -> (i32, String);

在(免费)pascal 中,我想我会使用命名的记录类型,但它不会让我解构,所以我需要一个单独的变量。

type
  Tuple = packed record
    a: integer;
    b: string;
  end;

var
  a: integer;
  b: string;
  t: tuple;
  
function returns_tuple (): Tuple;
{ function body ommited }

begin
  t := returns_tuple;
  a := t.a;
  b := t.b;
end.

标签: tuplespascal

解决方案


Afaik 在 Delphi 中唯一这样的匿名(未声明)结构是匿名方法的闭包状态,而 Free Pascal 甚至还不支持它。

所以没有支持,我不知道有什么计划。帕斯卡通常很擅长打字。

如果你真的需要替换一些有效的东西,你可以尝试在变体数组之上构建一些东西。如果你只想要它的审美,离开它。


推荐阅读