调用具有两个相同参数的函数,但在调用时设置第二个参数
我在调用一个需要两个参数的函数。我使用相同的变量,但在第二个参数中,我将此变量设置为另一个变量。 见下图:调用具有两个相同参数的函数,但在调用时设置第二个参数
https://dartpad.dartlang.org/2156442de07f56d90b430bc67f3461ac
void main() {
String s = 'oi';
aa(s, s = 'oi2');
}
void aa(String buf, String buf2){
print('$buf, $buf2');
}
这将打印 “OI,OI2”。 我想要这样的事情发生。我正在使用属性中的修改通知,如:
set title(String n) {
this.modified('title', _title, _title = n);
}
但是,我不知道这是否可以看作是一个错误或它是预期的。
感谢,乔
s
是其由值来传递,而不是通过引用一个String
。
aa(s, s = 'oi2');
评估第一参数s
,这是'oi'
下s = 'oi2'
被评估,这意味着s
获取分配'oi2'
然后s = 'oi2'
的结果(这是'oi2'
)作为第二参数传递。
aa(s, s = 'oi2');
s
之后的值为oi2
。
参见参数的操作是由左到右,所以你可以依靠的第一个参数的值https://gist.github.com/floitschG/b278ada0316dca96e78c1498d15a2bb9
我认为处理器会解析所有的值,然后调用函数,使两个参数相同。我将使用它并保存一行代码。谢谢 – Jonathan
评价为了通过评估s
被发现"ii"
,然后第二个参数的值是分配的值s = 'oi2
- 它的计算结果为"oi2"
(而不是,在技术上,通过读取变量,它只是在函数调用之前变量被写入相同的值)。
预计 - 如果任何实现做了别的事情,它就会被破坏。
我不明白'title' getter是如何涉及的或者期望的行为是什么? –
@GünterZöchbauer,吸气只是一个标题=> _title。关键是,当我呼叫aa(_title ='oi',_title ='something else')时,在第一个参数中是'oi',第二个是'别的东西',但它们在调用者范围内都是_title 。我想这是正确的,对吧? – Jonathan
这个问题有点令人困惑,因为你在问题中使用's'而不是'title'。那么这就是为什么第一个参数没有在'aa()'里面赋值'oi2'的原因? –