2529963039 发表于 2015-12-17 10:27:06

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

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

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

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

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

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

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

功能 处理结果()
    变量 结果1 = 计算和()// 这个使用默认值,结果1的值为 150
    变量 结果2 = 计算和(100,200) // 这个不使用默认值,结果2的值为 300
    变量 结果3 = 计算和(100) // 这个参数1不使用默认值,参数2使用默认值,结果2的值为 200
结束引用传值、参数返回值
函数里,返回语句只能返回一个值,如果需要返回多个值的话,就需要把这些值拼接成字符串或者是存放到数组里,之后进行返回。可是当我们要返回的数据个数不是很多时,我们可以使用参数返回,即参数的引用传值。
使用时,我们只需要在参数的前面加符号”&”即可。
例如:// 这种写法会改变传入变量的值
功能 修饰字符串(&内容)
    内容 = 字符串替换(内容,"a","0")
    内容 = 字符串替换(内容,"b","1")
结束
// 这种写法不会改变传入变量的值
功能 修饰字符串2(内容)
    内容 = 字符串替换(内容,"0","a")
    内容 = 字符串替换(内容,"1","b")
结束
功能 处理字符串()
    变量 姓名="abin"
    修饰字符串(姓名)// 这个函数执行完成之后,姓名这个变量的值就变为01in了
    修饰字符串2(姓名)// 这个函数执行完成之后,姓名这个变量的值不变,还是01in
结束
页: [1]
查看完整版本: 百宝云自定义功能函数教程