Pascal 中有类似 Rust 的元组吗?
Are there Rust-like tuples in pascal?
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.
Afaik Delphi 中唯一这样的匿名(未声明)结构是匿名方法的闭包状态,而 Free Pascal 甚至还不支持。
所以没有支持,我不知道有任何计划。 Pascal 通常很擅长打字。
如果你真的需要替换一些有用的东西,你可以尝试在变体数组之上构建一些东西。如果你只是为了美观,请留下它。
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.
Afaik Delphi 中唯一这样的匿名(未声明)结构是匿名方法的闭包状态,而 Free Pascal 甚至还不支持。
所以没有支持,我不知道有任何计划。 Pascal 通常很擅长打字。
如果你真的需要替换一些有用的东西,你可以尝试在变体数组之上构建一些东西。如果你只是为了美观,请留下它。