gmod吧 关注:88,026贴子:1,902,180

[wire-E2]E2基础教程——数据类型和函数篇

只看楼主收藏回复

一个编程语言必定会规定不同的数据类型,不同的数据类型有不同是计算方式。
在E2基础教程——语法篇中,我们已经知道,E2包含了多种数据类型。
但语法篇中只列出了各数据类型和其意思,实例中也只是用到了数字类型和字符串类型。
本篇——数据类型和函数篇,将会较为详细地分析各数据类型,并为玩家建立起函数的概念,理解函数的用途,学会写函数和用函数。
E2基础教程——语法篇传送门:https://tieba.baidu.com/p/5788441514


IP属地:浙江1楼2018-07-10 19:38回复
    该楼层疑似违规已被系统折叠 查看此楼


    IP属地:浙江2楼2018-07-10 19:40
    回复
      4、entity(实体)
      实体储存的就是游戏中的物品,是物品和代码的数据接口。我们可以设置entity等于某个物品,这样就能从entity中得到这个物品的信息,也可以设置和添加这个物体的信息,具体函数将通过下几篇教程解说。本篇的实例中我也会提到一点。
      一个实体包括了其坐标、角度、颜色、透明度、材质、质量、速度等参数,都可以调用相应函数来进行读取和设置
      5、string(字符串)
      字符串是用来储存字符的,也配套了相应的字符串函数来进行操作。
      字符常量用双引号括起来表示,如“abcd”
      字符串可以通过[ ]来读取第某个字符,如“abcd”[3]==“c” A=”123456” A[4]==”4”
      字符串可以通过加号来进行简单的连接,但不能通过减号进行删除
      如 “abc”+“123”==“abc123”
      6、array(数组)
      数组用来储存一系列信息,可以是任意数据类型,但一个数组只能存一种数据,甚至可以数组中存数组
      数组可以单独赋值,或者一次性整体赋值。
      如 A=array(5,4,3,2,1) 这样就给A数组一次性赋多个值
      A[1,number]=5 这样就给A的第一个元素进行赋值
      前提A必须被定义过是数组
      可以看到,对数组某元素进行操作的时候,除了要写上元素编号外,还要加上数据类型
      对于数组中包含数组的数组,也就是多维数组,以二维数组为例
      A=array(array(5,4,3,2,1),array(7,8,9)) A[2,array][3,number]==9
      7、table(表)
      表和数组很像,但他有个特性,就是能用字符串作为元素的名字,而不是像array一样,只能用数字编号
      如T[“A”,number]=1 这样后 T[“A”,number]==1
      其他的东西跟array没太大区别,就算有我也放以后补充。
      8、ranger(测距器)
      ranger是ranger函数的返回值的特有数据类型,包含了距离,坐标等数据
      最常用的方式就如同手上拿着激光笔,对某个方向发射激光返回ranger数据类型的数据
      我们就能通过ranger得到激光的长度和终点坐标等数据
      具体使用方法后面再说
      9、bone(骨头)
      可动的实体都有骨头,E2可以得到某个实体的某个骨头的具体参数,如玩家手臂的坐标和角度
      具体使用方法以后再说
      10、wirelink(数据线)
      Wirelink就相当于连接各组件的数据通道,就是一个自动的电线工具
      可以用来自动连接芯片和芯片之间的输入输出端,达到数据分享的目的
      具体使用方法以后再说
      11、Matrix(矩阵、Complex number(复数)、Quaternion(四元数)



      IP属地:浙江3楼2018-07-10 19:40
      收起回复
        要问我为什么要分篇写 我只能回答
        为了条理清晰
        到时候我会写一个合集目录篇
        其实是为了让更多人看见(小声BB)


        IP属地:浙江4楼2018-07-10 19:43
        回复
          以上便是E2的数据类型的解析,等我吃个晚饭,继续更新函数部分


          IP属地:浙江5楼2018-07-10 19:44
          回复
            我顶,解释得很好


            IP属地:广东来自iPhone客户端6楼2018-07-10 20:11
            收起回复
              变量数据类型的定义
              在代码文本开头的 @persist后面写上全局变量的变量名和数据类型来定义
              定义格式 变量1:数据类型 变量2:数据类型 变量3:数据类型 中间由空格隔开
              多个变量是同一数据类型也可以这样 [变量1 变量2 变量3]:数据类型
              注意 变量名就是前面的标识符
              变量名全部由大写字母开头,后面只能接英文字母,下划线及数字组成。
              所以完全的写法就是
              @persist 变量1:数据类型 变量2:数据类型 [变量3 变量4 变量5]:数据类型
              @persist X:number E:entity [A_1 A_2]:angle
              如果不写参数类型,变量默认为number(数字)类型


              IP属地:浙江8楼2018-07-10 21:13
              收起回复
                忘记了一个数据类型
                bool(逻辑)
                逻辑型数据就只有两个值 要么是1(真),要么是0(假),用来进行判断的储存,几乎用不到,可以被number代替


                IP属地:浙江9楼2018-07-10 21:20
                回复
                  (二)函数
                  上一篇我似乎提到过,函数是程序的基本单位,一个程序就是由一个又一个函数组成的。那么函数到底是什么呢,简单的说就类似于一条公式,就如同求一元二次方程时候用的公式法求解,代入A,B,C三个值就能求出方程的解。这便是一个简单的函数。函数就是一个过程,是一段计算的整合,将多步计算整合在一起,每次调用就是进行多次运算。
                  一个函数有三部分,输入、计算、输出。
                  输入
                  输入就是输入数据,就如同上面提到的求解公式要代入A、B、C三个值一样,函数也需要输入一些数据来进行计算。但输入并不是必须的,当数据能直接在函数内读取,或者根本不需要输入数据时,函数的输入部分就能忽略。我们将输入的数据统称为参数,参数便是函数要用来处理的数据。
                  计算
                  计算是函数的根本用途,当程序中有某些步骤是一样的时候,重复写一段代码既占用位置显得繁杂,又麻烦感觉很多余。
                  所以函数的用途就出现了,将一段较长的操作步骤写为一个函数,之后有需要就调用这个函数就行了。而计算就是函数中的操作步骤,通过一系列计算,我们就能得到我们所要的结果。
                  输出
                  条公式是为了解决某些问题,有问题就有答案,输出便是函数的答案。将数据输入和计算,便能得到一个答案,将这个答案输出来,给接下来的语句使用。输出和输入一样,当数据能直接在函数内读取,或者根本不需要输出数据时,输出可以忽略。
                  函数的定义格式
                  一个函数的定义由函数头和函数体构成,函数头是函数的声明,声明了这个函数的名字、输入的参数和输出的数据类型。函数体是函数的计算部分,包括了函数的一切步骤。
                  function 输出的数据类型 函数名(一定是小写的) (参数列表) 这是函数头
                  {
                  return 表示输出
                  } 花括号里面是函数体
                  return后面接的数据就是函数要输出的数据,一旦输出,函数便直接结束。return的数据的数据类型一定要和声明的输出数据类型一致,否则会发生错误。
                  函数名一定是小写英文开头,后面接英文、数字和下划线
                  参数列表里面包含了输入的参数类型和接下来使用这些参数的参数名。
                  输出的数据类型决定了你能输出什么东西
                  数据类型可以是上述数据类型中的任何一类。如果不需要进行输入,那么参数列表内不填任何东西就行了,如果不需要输出,那么便要输出“空”,用void表示“空”。
                  下面举几个函数栗子
                  function number add1(A:number,B:number) 参数也是变量,参数名也要大写字母开头
                  {
                  return A+B 返回A+B的值
                  }
                  @persistC:number 定义全局变量C
                  function void add2(A:number,B:number)
                  {
                  C=A+B
                  }
                  @persist[A B C]:number
                  function void add3()
                  {
                  C=A+B
                  }
                  这就是不同情况的函数的声明
                  全局变量是程序中公有的变量,在程序中有且仅有一次变量声明,不能重复
                  局部变量可以在不同作用域重复使用而且没有冲突 作用域是什么详情请自行百度
                  因为有了全局变量,所以不需要参数的传递,故不需要输入或输出。
                  函数的调用
                  上面我们知道了如何定义一个函数,那么接下来就要学如何使用函数。
                  使用函数被称为调用,调用一个函数需要函数名和输入参数
                  函数名(参数列表)
                  按照上面定义的几个函数,我们调用函数应该是这样
                  C=add1(1,2)
                  结果C==3
                  add2(4,5)
                  结果C==9
                  A=3
                  B=4
                  add3()
                  结果C==7
                  函数的嵌套
                  函数内除了计算公式,还能包括判断和循环语句,也能在函数里面调用其他函数。但值得注意的是,函数1内调用函数2,那么函数2需要在函数1之前声明并定义,调用函数前必须确保函数在之前已经被声明并定义。
                  函数除了能调用其他函数,还能调用自身,这被称为递归,递归是函数较为复杂的应用,我在下面会举例子,但不做具体解释。


                  IP属地:浙江11楼2018-07-10 21:59
                  回复
                    没精吗不合理啊
                    顶下,现在研究wire的人是真的少


                    12楼2018-07-10 23:13
                    收起回复
                      语法篇和上面这些内容全部为编程基础,真正的E2的应用部分从接下去开始讲。关电脑时忘记保存文档了,不知道有没有存下来。明天继续更新!


                      IP属地:浙江来自Android客户端14楼2018-07-10 23:44
                      回复
                        纯机械党前来围观


                        IP属地:山东来自iPhone客户端15楼2018-07-11 11:46
                        收起回复
                          @符-文 申精


                          IP属地:浙江16楼2018-07-11 17:20
                          收起回复
                            函数的应用
                            一个程序的基本单位就是函数,E2也不例外,而且E2的内置函数很多很多,用法也各不相同,我们所要做的就是掌握各种函数的用途的使用方法,这样我们就能算是学会写E2了。之前的这么多东西我都在讲我们自己写的东西,那么接下来就要说一说E2自带的函数了。
                            E2自带了很多很多函数,有各种各样的使用方法,但这些函数大部分都需要一个目标对象。什么是对象,就是两只大象(误)
                            对象就是使用函数的东西,相信学过C++的玩家能很容易理解。E2中的数据类型其实是很多个类,每个类有每个类的成员数据,同样的有很多成员函数。而E2中,成员函数早就已经被写好了,等着你来调用。
                            使用这类函数的格式为
                            函数名(参数列表) 和 对象:函数名(参数列表) 两种
                            如E=entity() entity()函数在无目标对象时返回值是E2芯片本身,那么现在E就代表了E2芯片
                            P=E:pos() pos()函数,在对象为实体时,返回此实体的世界位置坐标(vector),那么现在P就是vector类并储存了坐标数据
                            E:setpos(vec(0,0,0)) setpos(V:vector)函数,在对象为实体时,将实体传送到坐标V的位置(需开启prop权限,权限之后再说)
                            同样,这些函数有参数输入,也有结果输出。
                            这些函数在对象不同时,其作用也不一样
                            如,vec(1,1,1):length() 这样就会输出vec(1,1,1)向量的模长。
                            “adwadw”:length()就会返回字符串的长度
                            可以认为,对象也是一种参数,函数会根据对象来进行相应的计算。
                            E2内包含的函数真的是非常多,但只要灵活的运用,很容易就能写出你想要的程序。接下来我会另开一篇,开始介绍常用的一些函数的用法。


                            IP属地:浙江17楼2018-07-11 22:19
                            回复
                              接下来我会给出一些实例 为大家学习和理解提供帮助 具体能发多少,要看能不能过审,贴吧误吞太严重了。


                              IP属地:浙江18楼2018-07-11 22:21
                              回复