全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
31618 8
2014-05-01
复制代码



思路如下:
1. 通过local 定义aaa
2. 在定义的命令中显示aaa的内容
有没办法做到只运行abc,aaa或abc就能把aaa的值显示出来




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-5-1 22:26:19
local是在命令运行前定义的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-1 22:32:20
复制代码

local 定义的内容无法在命令中显示。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-2 10:24:29
为了了解local、global等暂元在程序内部的运作原理,做如下实验:
复制代码
定义两个变量,一个是所谓的“本地”,一个是“全局”,利用
复制代码
显示程序中所有宏变量:
01_define.jpg



接着定义程序:
复制代码
很简单,把全局的、本地的都给我显示出来:
之后在程序中定义此program并运行:
02_output_1.jpg
发现全局的没问题,本地的却没显示!

回到上面一张图,发现全局的、本地的变量名称是不一样的,本地的前面其实是有一个“_”的,更改程序如下:
复制代码
运行:
03_output_2.jpg

还是一样。。故得出结论:程序中的local变量是访问不到的,除非是global变量。
这个也很容易理解,如果学过对象编程,就可以把程序中的local变量看成是私有变量,其他程序是访问不到的,只有程序层能访问到,而global为全局变量,所为全局就是大家都能访问到,程序也是可以的
对此,作出另一组实验:
复制代码
截图:
04_output_3.jpg
输出是达到预期的,而且在后面的macro list中可以看到全局变量多了一个gg_1,而本地变量ll_1是没有增加的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-2 12:16:22
我的程序中用的是global,但我希望用local实现,故发个帖子看看高手能不能实现!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-3 07:14:52
dxystata 发表于 2014-5-2 12:16
我的程序中用的是global,但我希望用local实现,故发个帖子看看高手能不能实现!
这里涉及到Stata对“局部”与“全局”的理解。local定义的macro的含义,要看它是在哪个“程序范围”内定义的,其内容只在该范围内有效。同名的macro,可以在不同的“程序范围”内分别定义(分别有自己的内容,而不“冲突”——个人以为,表面上可以同名,实际上不会是真正的同名)。
loc a abcd
ma l
di "a=`a'"
cap pr drop fun
pr fun
loc a rel
n di "a=`a'"
n ma l
end
fun
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群