问题:将变量输入子程序后进行修改,如果需要在子程序外部获得修改后的变量,是否一定需要在子程序内输出变量?规则是什么呢?
发现:将变量输入子程序后进行修改,不输出变量,在子程序外部无需任何其他操作也能够读取已修改的变量(取决于子程序内部的变量修改方法?)
比如:输入词典或列表变量进子程序后,进行词典操作与列表操作修改变量,不输出变量,接着获取两个变量值,发现已被修改。但是文本变量却无法实现同样的操作。
这里有个动作可以测试一下:子程序仅输入 - by dalou - 动作信息 - Quicker
词典、列表是引用类型,传入的是引用,两个指向的是同一个对象。
在编程语言中有“值”类型和“引用”类型,网上有大量这方面的介绍,可以搜一下看看。
作一个粗浅的解释,可以把引用类型看做一个房间,传递给子程序的是“房间号”,你在子程序里给房间修改了布局,在主程序里也是一样能看到。
也可以用状态存取传递,我这里动作里用了大量状态存取 https://getquicker.net/Sharedaction?code=f1743555-674d-4729-2552-08dd3978d697