看流星社区

 找回密码
 注册账号
查看: 2580|回复: 0

百宝云自定义功能函数教程

[复制链接]

该用户从未签到

发表于 2015-12-17 10:27:06 | 显示全部楼层 |阅读模式
百宝云自定义功能函数
        通过这节课我们可以掌握自定义函数的定义与使用方法,同时理解参数与返回值的作用,这样我们才能在实际的开发过程中,正确的使用自定义函数。
4.1 概念
        功能是百宝云的基本模块,通过对功能模块的调用实现特定的功能。百宝云中的功能相当于其它高级语言的子程序,在其他高级语言中,比如在C、C++中,称为函数。
允许用户建立自己定义的功能,用户可把自己的算法编成一个个相对独立的功能模块,然后用调用的方法来使用功能,可以说百宝云的全部工作都是由各式各样的功能完成的。
由于采用了功能模块式的结构,百宝云易于实现结构化程序设计,使程序的层次结构清晰,便于程序的编写、阅读、调试.。

(关键字,function,end  功能  结束)
自定义函数分下列四类:
无参函数
有参函数
无返回值函数
有返回值函数
下面我们来分别学习这四类函数,并且希望大家能掌握这四种函数的使用方法。知道在什么情况下选择什么方式函数。

4.2 无参函数
顾名思义,这是一个没有参数的函数,这种方式的函数,比较简单,也容易掌握。
例如:
  1. 功能 求1到100的和2()
  2.     变量 num = 0
  3.     遍历(变量 i = 0; i < 101; i++)
  4.         num = num + i
  5.     结束
  6. 结束
复制代码
4.3 有参函数
有参函数就表示函数有1个或者以上的参数,参数个数根据用户的需求决定,但是建议不要超过15个。因为参数越多,调用起来就越麻烦,约束也越多。
在调用有参函数时,遵守如下规则就可以了:定义函数的时候,声明了多少个参数,调用的时候,就传递相应个数的参数即可。
  在定义函数的时候,我们要先估计下需要多少个参数,这样才好写代码。如果在后期维护的时候,需要增加参数时,可以在原代码的基础上直接增加参数,也可以重新定义一个函数,把原来代码复制过来,进行修改,这样的好处就是不改变原来的代码,相当C++里的函数重载。
例如:
  1. 功能 计算中间距离(点1,点2)
  2.     var 中间距离 = (点1 + 点2) / 2
  3.     sendtextmsg("中间距离为:" &中间距离)
  4. 结束
复制代码
4.4 无返回值函数
当不需要接收或者判断函数的执行结果时,就可以使用无返回值函数。
例如:
  1. 功能 求1到100的和()
  2.     变量 num = 0
  3.     遍历(变量 i = 0; i < 101; i++)
  4.         num = num + i
  5.     结束
  6. 结束
复制代码
使用这样的方式,如果需要得到函数的执行结果,那么我们就需要定义一个全局变量,来存储这个计算的结果,之后在函数外面进行调用。代码就要改成下面这样的。
  1. 变量 结果值 = 0
  2. 功能 求1到100的和2()
  3.     变量 num = 0
  4.     遍历(变量 i = 0; i < 101; i++)
  5.         num = num + i
  6.     结束
  7.     结果值 = num
  8. 结束
复制代码
这样虽然可以得到函数的执行结果,但是却需要定义一个全局变量来处理,如果是在多线程里调用这个函数的话,那么我们还得加锁(临界区,这个知识到后面多线程再讲),防止多个线程在同一时间修改变量值,导致程序在读取这个变量值时,出现异常数据。
因此,如果我们需要把函数的执行结果返回出来的话,则使用有返回值函数方式。

4.5 有返回值函数
顾名思义,这个函数是有返回语句的,它可以把函数的执行结果返回出来,以便调用者知道函数的执行结果,之后做相应的处理。
例如:
  1. 功能 求1到100的和()
  2.     变量 num = 0
  3.     遍历(变量 i = 0; i < 101; i++)
  4.         num = num + i
  5.     结束
  6.     返回 num   // 这里把计算的结果返回,以便函数外部接收
  7. 结束

  8. 功能 处理指令()
  9.     变量 结果 = 求1到100的和()    // 这里是调用函数,并接收函数的返回值,存储到结果变量。
  10.     发送文本消息("计算结果:" &结果)
  11. 结束
复制代码
4.6 有参函数的扩展
默认参数
在百宝云提供的API里,我们发现有很多的命令都存在默认值,这又是什么意思呢?
意思就是我们在调用的时候,如果不写参数的话,那么百宝云会直接使用默认的值做参数,如果调用的时候写了参数值,那么就不使用默认值,而使用指定的参数值。
如:获取错误信息(类型=0) 这个命令。在调用的时候,这样写就是使用的默认值:获取错误信息(),而这样写的话,就不使用默认值:获取错误信息(1)。

那么自定义函数的默认值又该怎么写呢?很简单,写法和云库里提供的API写法差不多。如下:
  1. 功能 计算和(数值1 = 50,数值2 = 100)
  2.     返回 数值1 + 数值2
  3. 结束

  4. 功能 处理结果()
  5.     变量 结果1 = 计算和()  // 这个使用默认值,结果1的值为 150
  6.     变量 结果2 = 计算和(100,200) // 这个不使用默认值,结果2的值为 300
  7.     变量 结果3 = 计算和(100) // 这个参数1不使用默认值,参数2使用默认值,结果2的值为 200
  8. 结束
复制代码
引用传值、参数返回值
函数里,返回语句只能返回一个值,如果需要返回多个值的话,就需要把这些值拼接成字符串或者是存放到数组里,之后进行返回。可是当我们要返回的数据个数不是很多时,我们可以使用参数返回,即参数的引用传值。
使用时,我们只需要在参数的前面加符号”&”即可。
例如:
  1. // 这种写法会改变传入变量的值
  2. 功能 修饰字符串(&内容)
  3.     内容 = 字符串替换(内容,"a","0")
  4.     内容 = 字符串替换(内容,"b","1")
  5. 结束
  6. // 这种写法不会改变传入变量的值
  7. 功能 修饰字符串2(内容)
  8.     内容 = 字符串替换(内容,"0","a")
  9.     内容 = 字符串替换(内容,"1","b")
  10. 结束
  11. 功能 处理字符串()
  12.     变量 姓名="abin"
  13.     修饰字符串(姓名)  // 这个函数执行完成之后,姓名这个变量的值就变为01in了
  14.     修饰字符串2(姓名)  // 这个函数执行完成之后,姓名这个变量的值不变,还是01in
  15. 结束
复制代码
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 01:30

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表