"cascading member access" 运算符 (..) 的作用是什么?
What does the "cascading member access" operator (..) do?
在 operator documentation 中是这样写的:
x..y
- cascading member access. Results in x, which is useful for chaining together method calls.
这是什么意思?这是如何使用的?搜索 "cascading member access" 只有意义地帮助我找到了 Beef 文档的摘录。
当它说 "results in x" 时,这意味着 在 任何解析对 y 的任何调用之后,这与空条件运算符 (?.
) 有效。这意味着,不是做这样的事情:
let s = scope String();
s.AppendF("2 + 3 = {}", 2+3);
Console.WriteLine(s);
...您可以使用 String()..AppendF(...)
而不是 String().AppendF(...)
,并且由于该表达式将解析(同样, 在 之后 AppendF
被调用)放在运算符的左边,和s
一样,都可以放到WriteLine
调用中:
Console.WriteLine(scope String()..AppendF("2 + 3 = {}.", 2+3));
而"chaining"位是指在同一行中使用多个级联成员运算符在同一表达式中顺序调用同一对象上的成员。例如,您可以这样做:
Console.WriteLine(scope String()..AppendF("Two + three = {}.", 2+3)..ToUpper());
...而不是这个:
let s = scope String();
s.AppendF("Two + three = {}.", 2+3);
s.ToUpper();
Console.WriteLine(s);
在 operator documentation 中是这样写的:
x..y
- cascading member access. Results in x, which is useful for chaining together method calls.
这是什么意思?这是如何使用的?搜索 "cascading member access" 只有意义地帮助我找到了 Beef 文档的摘录。
当它说 "results in x" 时,这意味着 在 任何解析对 y 的任何调用之后,这与空条件运算符 (?.
) 有效。这意味着,不是做这样的事情:
let s = scope String();
s.AppendF("2 + 3 = {}", 2+3);
Console.WriteLine(s);
...您可以使用 String()..AppendF(...)
而不是 String().AppendF(...)
,并且由于该表达式将解析(同样, 在 之后 AppendF
被调用)放在运算符的左边,和s
一样,都可以放到WriteLine
调用中:
Console.WriteLine(scope String()..AppendF("2 + 3 = {}.", 2+3));
而"chaining"位是指在同一行中使用多个级联成员运算符在同一表达式中顺序调用同一对象上的成员。例如,您可以这样做:
Console.WriteLine(scope String()..AppendF("Two + three = {}.", 2+3)..ToUpper());
...而不是这个:
let s = scope String();
s.AppendF("Two + three = {}.", 2+3);
s.ToUpper();
Console.WriteLine(s);