mud吧 关注:20,934贴子:98,879
  • 11回复贴,共1

请教几个和mudlib代码有关的零散问题:returen,random及其它

只看楼主收藏回复

单机的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到底需不需要赋值?什么情况下可以不赋值直接用?


IP属地:上海1楼2014-09-18 15:45回复
    亲,把大二的C++学习一下吧。


    2楼2014-09-18 18:00
    收起回复
      2025-06-13 01:48:06
      广告
      不需要返回值的函数 代码不需要往下执行了就 return


      IP属地:辽宁来自Android客户端3楼2014-09-18 22:38
      回复
        ob me 都是函数内变量 肯定的副职


        IP属地:辽宁来自Android客户端4楼2014-09-18 22:41
        收起回复
          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)
          在调用函数时,已经完成了传值赋值。


          IP属地:黑龙江5楼2014-09-20 07:06
          收起回复
            非常感谢。解答的很详细,辛苦了!


            IP属地:上海来自Android客户端6楼2014-09-20 12:32
            回复
              直接用有可能是事先定义了全局变量,在单个方法中定义的可能是局部变量


              IP属地:辽宁来自Android客户端7楼2021-08-21 18:28
              回复