zoukankan      html  css  js  c++  java
  • 2014.4.26 lua基础篇一

    1> xcode中,AppController.mm,.mm文件是为了调起来系统的c++/oc混合编译器clang++;

     
    2>  lua基本语法:
    --1.  前天参加了一个面试,被问到lua的.和:的区别,表示出了lua这个名字其它一概不知,因此回来补一下;
         . 和:   符号用于函数调用,因此先学习一下lua的函数;
         语法:  function func-name (func-arguments) 
                               func-body
                   end
                   
                   func-name = function (func-arguments)
                               func-body
                   end
                   第二种方法是因为lua的函数是带有词法定界的第一类值,大概理解如下:
          词法定界是一个静态域概念,标识符的绑定与程序运行无关,至于程序语句的组织有关,简单来说这一特性使得lua的函数可以嵌套,且内部函数可以访问外部函数定义的成员,参数,以及全局函数(http://blog.sina.com.cn/s/blog_6ce94de50100o2au.html);也就是lua闭包的概念;(这么说不太合适,关于闭包等,将在以后的学习中逐步解释和修正);
          第一类值,意思是一个对象在运行期间被创建,可以当成参数传递;这就允许将函数定义为一个变量,也就是第二种写法;
         解释下.和:     , 
              但有如下定义时     
                        T = {
                                         function func-name (self,func-arguments)
                                                 func-body
                                         end
                              }
                        T.func-name(self)就相当于T:func-name ()
     
          @@@@ . 虽然在这里":"的写法不具有特殊意义(都将可以用"."方式实现),但":"事实上提供了隐式self参数的机制,为OO(面向对象)提供了可能和基础;
     
         关于函数的可变形参,"..."所代表的形参可以在函数中访问arg局部变量得到,arg为table类型
          
    --2.  下面整理一下对lua语法的一些基本认识:
         @. 先说注释,当行"--",多行"--[[" "]]","[[" "]]"可以嵌套;
     
         @. lua的"="可以多赋值;eg:a,b,c = 1,2,3;
     
         @. "..."函数可变形参
     
         @.与c语言比较,lua有些不一样的操作符(按优先级从高到低):   
              ^幂运算;
              一元操作符包括"-","not",取长"#";     --字符串的长度为字节数(一字符一个字节),table的长度为整数下标,任何一个nil值都将使table结束;
              算数运算符与c语言一致;
              字符串链接操作符".."
              关系运算符"~=" 相当于C语言的"!="
              逻辑运算符  and or  (and高于or)             --a and b  若a为true,则返回b;
                                                        --a or b  若a为true,则返回a;
                             --模拟c语言的三目运算符      x = a?b:c;    lua可以写为x = a and b or c;(=优先级最低)
                             --x = x or v    相当于if not x then x = v end
     
         @.变量定义:
              没有使用过的变量值都为nil,如果要清除一个变量可以给变量赋值为nil;
              Boolean,在lua中,只有nil和false的值被解释为fasle,其它都为true,比如负数,0,空字符串"";
              Number,在lua中没有整数
              String的定义方法:           "one line\nnext line\n\"in quotes\", 'in quotes'"     (单引号或双引号,可嵌套)
                                                 "[[" "]]"定义字符串时可以自动换行 eg:   
                    page = [[                        
                        <HTML>
                            <HEAD>
                                <TITLE>An Html Page</TITLE>
                            </HEAD>
                            <BODY>
                                <A HREF="http://www.lua.org">Lua</A>
                                [[a text between double brackets]]
                            </BODY>
                         </HTML>
                     ]]
            

                lua对大小写敏感
     
         @.Table   关系表类型:
              根据初步理解,table可实现两个主要功能:
              (1).实现数组的功能;
                   有以下特性:
                         T1 = {}     --定义一个空表
                         T1[1] = 10     --类似C语言,用下表操作,索引值都必须用"[]",字符串除外
                         T1 = {100}     --如果不写索引值,索引值从1开始往后编,如,此时T1中的100索引为2;
                         T1 = {"Tom"}     --lua的table表不区分存储类型
                         T1.Sam = 25;     --也可以用字符串做索引值,如,T1["Sam"] = 25,此时可以简化为T1.Sam = 25
                         T1.Devid = {age = 10,sex = "man"};     --同T1.Devid["age"] = 10   T1.Devid["sex"] = 'man'
                                                 --lua的table可以嵌套元素之间用","隔开
                         --一下是一种简化的表写法,方便使用
                              T1 = 
                              {
                                  10,          --相当于[1] = 10;
                                  [100] = 20,      --table表并不用按照顺序,但省略的索引将按顺序填充
                                  John =           --也可以写成["John"] = 
                                           {
                                                     Age = 25     --可以写为["Age"] = 25
                                                     Sex = "man"
                                            }         
                                  50     --相当于[2] = 50
                              } 
              (2).实现lua的面向对象;
                       由于元表的灵活特性,使其完全有能力模仿出c++class机制,实现多态.相关原理和方法需要进一步学习,做详细笔记; 
  • 相关阅读:
    微信小程序 iPhone 11、iPhoneX 底部安全区域(底部小黑条)适配
    Servlet与vue-axios交互跨域问题之Access-Control-Allow-Origin' header contains multiple values '*, null', but only one is allowed.
    Windows10下PCL1.8.1以及Python-pcl1.81环境配置的掉发之路
    【问题记录】Navicat Premium连接mysql-8.0.17时出现2059
    mysql-8.0.17解压版安装步骤及MySQL服务无法启动问题的解决办法
    ENVI基本操作之彩色合成
    GeoServer与Udig发布矢量数据出现的问题1——预览数据一半显示正常一半重叠
    本地日志文件
    SQL语句(2)--- 函数
    SQL语句(1)--- SQL简介
  • 原文地址:https://www.cnblogs.com/fegnze/p/3692034.html
Copyright © 2011-2022 走看看