请教几个和mudlib代码有关的零散问题:returen,random及其它
mud吧
全部回复
仅看楼主
level 8
xiuliinlove 楼主
单机的mudlib代码也看了不少了,很多语句已经能猜出是什么意思了,但看得多了又会出现新的疑问,有时绕来绕去很难绕明白啊- -
几个疑问:
1、return
看见过几种写法:return 0,return 1,return(return notify_fail()相当于return 0)。return 0返回假,表示条件不满足;return 1表示满足条件,然后return之后同一个{}里面return之后的语句就不往下执行了。以上我的理解应该没错吧?
但是有时会看见return什么也不接的写法,这个直接return是什么意思?返回的是0、1还是什么也不返回?而且我好想在哪里看见过有说return 1也表示什么也不返回的?糊涂了……
2、random
结合代码发现random(n)的取值应该是在0~(n-1)之间。但是代码里经常看见random(1)把我又弄得凌乱了,random(1)和0有什么区别么?
3、ob、target、me等
知道mudos函数有this_object()和this_player()。用ob和me取代这两个函数时一般要先给ob和me赋这两个值,写成me=this_play()之类的。但是我看的代码里有的没找到赋值的语句,执行也不出错。而我自己添加的me和ob如果不赋值(或者应该叫定义?)就会报错。搞不清楚ob和me到底需不需要赋值?什么情况下可以不赋值直接用?
2014年09月18日 07点09分 1
level 5
亲,把大二的C++学习一下吧。
2014年09月18日 10点09分 2
c语言十几年前就没学明白,计算机二级都是稀里糊涂过关的……现在再学不现实啊,不过倒可以参考一下,正好手上有c语言的chm文件……
2014年09月19日 15点09分
level 8
不需要返回值的函数 代码不需要往下执行了就 return
2014年09月18日 14点09分 3
level 8
ob me 都是函数内变量 肯定的副职
2014年09月18日 14点09分 4
谢谢。我还得再研究研究。按我理解也该赋值,但总看见个别代码直接用的,暂时还没找到规律。
2014年09月19日 15点09分
level 15
1,return
“return 0返回假,表示条件不满足;return 1表示满足条件,然后return之后同一个{}里面return之后的语句就不往下执行了。以上我的理解应该没错吧?”
这个理解是错的,return 0未必就是假,条件不满足,return 1也未必就是条件满足。这个是否条件满足,要看你的母函数函数中条件定义和子函数的编写,完全可以return 1是条件不满足。而且涉及到return 0或1或其他数字的时候,说明你的这个子函数是int类型的函数。不是仅仅可以用于判断条件是否满足的,还可以做很多事情,比如返回-1,0,1,2,3,4等等分别表示不同的意义。都看你的函数是如何定义的。
return后的语句不往下执行了这句话算是对了一半,只能说是本轮执行结束了,因为还有递归函数等直接return 返回函数本身继续执行的。
return后面什么都没有说明这个函数是void类型的函数,你可以return后面什么都没有,也可以不return。
也就是说,你return什么(或者不return)要看你这个函数定义的时候是需要什么类型的返回值,需要返回整形,就定义为int整形函数,需要字串,就定义为string字串函数,不需要返回就定义为void函数等等等,还有映射类的数组类的甚至mixed等等。
2,random
你的理解没错,我个人感觉没区别,不过我的确从未见过random(1)的写法。
3,me,ob,tar等等只是你自己定义的变量名,如果你用this_object()或this_player(),那么他就取得相应地赋值,变量名你完全可以自己随意定义,只要能够清楚表达编程逻辑即可。
如果说有的你看到的ob,me之类的没有被赋值还依然正确执行,那么说明me和ob等变量的值是传递进来的,也就是说,是在函数定义中的变量,比如
int do_abcde( object me, object ob, xxxxxxxxx)
在调用函数时,已经完成了传值赋值。
2014年09月19日 23点09分 5
你让我想起以前一个老美同事,保持专业态度,永远不会对任何哪怕再简单的问题嗤之以鼻。在中国比较稀有啊。
2014年10月07日 12点10分
回复 suncg1019 :惭愧。。。真的不敢当,尽我所能只可惜能力有限。[吐舌]
2014年10月07日 14点10分
这个见仁见智吧,有时候看见人问太低级的问题,我就会有恨铁不成钢的感觉,不耐烦。
2017年10月04日 04点10分
level 8
xiuliinlove 楼主
非常感谢。解答的很详细,辛苦了!
2014年09月20日 04点09分 6
level 1
直接用有可能是事先定义了全局变量,在单个方法中定义的可能是局部变量
2021年08月21日 10点08分 7
1