作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通过使用 Ruby,我们可以做到这一点。
s = "split by space"
A,B,C = s.split(" ").map(&:to_i)
使用 D-lang,它是编译错误。
string s = "split by space";
int A,B,C = s.split(" ").map!(x => x.to!int);
最佳答案
乔纳森大部分是对的,但实际上有一种方法可以拆分 tuple
进入
它的组成部分,虽然比 Ruby 更冗长,而且没有任何方便
类型推断:
import std.meta : AliasSeq;
import std.typecons : tuple;
auto foo() { return tuple(42, 29, "hello"); }
unittest {
int a, b;
string c;
AliasSeq!(a, b, c) = foo(); // Look ma, magic!
assert(a == 42);
assert(b == 29);
assert(c == "hello");
}
虽然没有内置的方法可以像你的例子那样使用范围来做到这一点,但它是
import std.meta : AliasSeq, Repeat;
import std.typecons : Tuple, tuple;
import std.algorithm : map;
import std.conv : to;
import std.string : split;
import std.range : isInputRange, ElementType;
unittest {
string s = "1 2 3";
int A,B,C;
AliasSeq!(A,B,C) = s.split(" ").map!(x => x.to!int).tuplify!3;
assert(A == 1);
assert(B == 2);
assert(C == 3);
}
auto tuplify(size_t n, R)(R r) if (isInputRange!R) {
Tuple!(Repeat!(n, ElementType!R)) result;
static foreach (i; 0..n) {
result[i] = r.front;
r.popFront();
}
assert(r.empty);
return result;
}
关于d - 有没有办法用 Dlang 一次分配多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046850/
我是一名优秀的程序员,十分优秀!