当前位置:   article > 正文

2402d,d如何解包元组

2402d,d如何解包元组

原文
我想大家一切都好.我陷入了死锁.在D中如何解包元组?

//示例元组
my_tuple = (2010, 10, 2, 11, 4, 0, 2, 41, 0)
//组元解包为单独的变量
year, month, day, hour, minute, second, _, _, _ = my_tuple
print(f"Year: {year}, Month: {month}, Day: {day}")
print(f"Time: {hour}:{minute}:{second}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

简单D代码:

module tupleUnpack2;
import std.stdio;
import std.typecons : tuple;
void main() {
    auto fruits = tuple("apple", "banana", "cherry");
    writeln(fruits[0]); //`"apple"
    writeln(fruits[1]); //"banana"
    writeln(fruits[2]); //"cherry"`
    auto (a, b, c) = fruits; //想它这么简单(类似`C#`的语法)
    //或
    auto(a, b ,c) = fruits.expand;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

我一直在使用AliasSeq(并别名它为"put"以方便使用):

import std.meta;
alias put = AliasSeq;
auto foo() { return tuple(1, 2, 3); }
int main(string[] args) {
  int x, y, z;
  put!(x, y, z) = foo();
  writeln(x, y, z);
  return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

助记符:"put""tup"的倒装,并撤消元组作用.

仍未提出直接实现.但是还有其他方法类似功能,如AliasSeq示例.

相关文章
1
2
3

在这些帖子中,可找到其他"方法",元组DIP描述和其他有用的想法.

谢谢谢尔盖!仍在阅读不同的"方法"信息量很大.

非常聪明的助记符TTKCiar!:)在查看了各种方法之后,我似乎喜欢基于你提出的方法,好吧,至少现在在实现直接实现之前是这样(期望!非常感谢大家的帮助!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/111237
推荐阅读