免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4922 | 回复: 29
打印 上一主题 下一主题

请教关于函数返回值的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-29 22:18 |只看该作者 |倒序浏览
有两个函数,a和b,函数a运行时会在屏幕上显示出它的执行结果.
现在我在函数b中调用了a,因为在b中调用a的时候,通过给a不同的参数,我已经知道a会有不同的结果,我仍然需要把a的执行结果在屏幕上显示出来,同时我还想让b函数根据a的有不同结果返回一个不同的值,如何才能实现呢?

  1. 假设 a 3的执行结果如下
  2. 1
  3. 1 2
  4. 1 2 3

  5. a 4的执行结果如下
  6. 1
  7. 1 2
  8. 1 2 3
  9. 1 2 3 4

  10. a 5的执行结果如下
  11. 1
  12. 1 2
  13. 1 2 3
  14. 1 2 3 4
  15. 1 2 3 4 5

  16. 函数b是这样的
  17. b ()
  18. {
  19.   if (( $1 <3 )); then
  20.      #需要函数b返回一个值99,同时退出
  21.   fi
  22.   
  23.   if (( $1 < 6  ));then
  24.     a $1
  25.     #需要函数b返回一个值0
  26.   fi
  27. }

复制代码

函数b中的语句应该怎么写?

论坛徽章:
0
2 [报告]
发表于 2005-08-29 22:41 |只看该作者

请教关于函数返回值的问题

  1. b ()
  2. {
  3. if (( $1 <3 )); then
  4.     #需要函数b返回一个值99,同时退出
  5.     return 99
  6.      exit
  7. fi
  8.   
  9. if (( $1 < 6  ));then
  10.    a $1
  11.    #需要函数b返回一个值0
  12.    return 0
  13. fi
  14. }
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-08-29 23:16 |只看该作者

请教关于函数返回值的问题

原帖由 "honbj" 发表:
if (( $1 <3 )); then
   #需要函数b返回一个值99,同时退出
   return 99
    exit
fi


這個 exit 不會被執行, 因為 return 一跑, function 就結束了.

论坛徽章:
0
4 [报告]
发表于 2005-08-30 08:16 |只看该作者

请教关于函数返回值的问题

return后相当于程序结束了,有exit的功能。
我只想到用exit 99之类的命令了,忘记了可以用return了,谢谢大家

论坛徽章:
0
5 [报告]
发表于 2005-08-30 08:27 |只看该作者

请教关于函数返回值的问题

各位,用return好像不能实现我的想法,用户return后,a函数本来的执行结果显示的也错乱了,比如说 a 5的执行结果应该是下面的格式

  1. 1
  2. 1 2
  3. 1 2 3
  4. 1 2 3 4
  5. 1 2 3 4 5
复制代码

但是在b中调用a后,显示成这样了

  1. 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
复制代码

也就是说都到了一行中了,而不是原来的多行。
而且return后的数值(如0,1,99等)也没有返回来,我是这样检测b函数的返还值的
rent=`b 4`
echo $rent

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-08-30 08:32 |只看该作者

请教关于函数返回值的问题

你將 stdout 與 return value 搞混了?
若如你所寫的 rent=`b 4` 的話
將 return 改為 echo 即可....

论坛徽章:
0
7 [报告]
发表于 2005-08-30 08:36 |只看该作者

请教关于函数返回值的问题

在b中调用a后,a的执行结果显示时不想受影响,同时我还要根据a的执行结果让b给我返还一个不同的值,如0,1,99等。但是现在不管我用exit还是return,函数b的返回值都同时包含了a的执行结果,这是怎么回事呢?应该怎么解决才好?

论坛徽章:
0
8 [报告]
发表于 2005-08-30 08:38 |只看该作者

请教关于函数返回值的问题

原帖由 "網中人" 发表:
你將 stdout 與 return value 搞混了?
若如你所寫的 rent=`b 4` 的話
將 return 改為 echo 即可....


我写的rent=`b 4`只是想得到b的返还值,不包括a的执行结果的返还值,也就是仅仅是0,1,或99这样的一个数字。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
9 [报告]
发表于 2005-08-30 08:42 |只看该作者

请教关于函数返回值的问题

调用a后
紧跟着用 $?取得a的返回值

论坛徽章:
0
10 [报告]
发表于 2005-08-30 08:48 |只看该作者

请教关于函数返回值的问题

原帖由 "waker" 发表:
调用a后
紧跟着用 $?取得a的返回值

因为a执行过程后会显示很多东西,这些就是a的执行结果。我用$?确实可以取得a的返回值,不过只是表示a执行成功的0,不能达到我的目的。因为任何情况下我调用a都能执行成功,不过根据参数的不同,a的执行结果不一样而已,而我想的是根据这个结果的不同返回不同的值(a的执行结果在调用a时都能预测到)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP