拯救地球 加入小组

21个成员 1329个话题 创建时间:2013-07-28

脚本~blalalalala

发表于 2014-05-17 1835 次查看

脚本,wiki上的解释

使用脚本语言[Scripting language]所写,脚本语言是为了缩短传统电脑语言编译连结的过程而创建的编程语言。



贴段豆瓣的:


学习一门脚本编程语言。
对于非计算机&软件专业的人来说,学习一门脚本语言可能没有学习用微博那么容易,但也没有学习一门自然语言那么难,需要花费的时间并不是太多,但收益巨大——从此以后大量的机械、重复的工作,都可以交由自动化的程序来完成;路过办公室面对着一个个表格文档在复制粘贴或者删掉行尾空格的人们,你可以在心里默默地说“图森破,桑泰一丝拿衣服”。

附1:候选列表
VBA:适合常年使用 Microsoft Office 的人们。
Python 和 Ruby:万能钥匙,可以批量处理文本等,也可以通过扩展库处理 Microsoft Office 等文档,但入门成本偏高,有程序员男友&基友的人们可以考虑选择。
JavaScript:因为可以运行于大部分浏览器中,所以适合经常需要折腾 Web 表单的人们选择,特别优势是学成之后可以干一些额外的事情,参考科普技术帖:怎样赞死一个人

附2:高级玩家候选列表
Lua bash 和 awk, sed, grep
3回复
  • 2楼 被遗忘者 2014-05-17

    今晚,开始,学习lua.

  • 3楼 被遗忘者 2014-05-18

    在lua中,一切都是变量,除了关键字。
    1. 注释

    --单行注释
    --[[
    多行注释
    ]]
    2.lua编程
    Hello,world!

    print(“hello,world!”);
    Lua中,语句之间可以用分号;隔开,也可以用空白隔开,一般来说,如果多个语句写在同一行的话,建议用分号隔开。
    习惯用分号了

    Lua 有好几种程序控制语句,如:

    ◆条件控制:if 条件 then … elseif 条件 then … else … end

    ◆While循环:while 条件 do … end

    ◆Repeat循环:repeat … until 条件

    ◆For循环:for 变量 = 初值,终点值,步进 do … end

    ◆For循环:for 变量1,变量2,… ,变量N in表或枚举函数 do … end
    可以省略步进值,这时候,for循环会使用1作为步进值。

    不同于其他程序设计语言的地方:
    ·语句块:
    在C中是用{}括起来的,在LUA中,是用do和end括起来的。
    比如: do print ('hello,world') end
    可以在函数 和 语句块 中定义局部变量。
    ·赋值语句:
    可同时给多个变量赋值: a,b,c,d = 1,2,3,4
    甚至: a,b=b,a --真的好方便的交换功能

    默认情况下,变量是全局的,
    定义局部变量的方法: local a,b,c = 1,2,3 --a,b,c都为局部变量
    ·数值运算
    支持 + - * / ,但lua多了^,表示指数乘方, 2^3 == 8
    ·连接两个字符串
    ".."运算符 : ‘cat,’..'i miss u' --print('cat cat .'.. "i miss u") 输出:cat cat .i miss u
    ·比较运算
    < > <= >= == ~=
    --~=是不等于
    ·逻辑运算
    and or not --and和or与c区别很大
    只有false和nil 才为 false,其他任何数据都计算为true, 0也为true.
    and 和 or的运算结果不是true和false,而是和它的两个操作数相关:
    a and b:如果a为false,则返回a;否则返回b
    a or b:如果 a 为true,则返回a;否则返回b
    最有用的语句是: x = x or v,它相当于:if not x then x = v end 。
    ·运算符优先级 --由高到低
    ^
    not -(-元运算)
    * /
    + -
    ..(字符串连接)
    < > <= >= == ~=
    and
    or
    ·关键字
    --关键字不能做变量,很少(相对来说~啦)
    and break do else elseif
    end false for function if
    in local nil not or
    repeat return then true until while
    ·变量类型
    可以用 type() 函数来检查变量的类型
    nil 空值,所有没使用过的值,都是nil,nil即是值,又是类型。
    boolean 布尔值
    number 数值。相当于double
    string 字符串
    table 关系表类型,很强大
    function 函数类型,所有的函数,它本身就是一个变量
    userdata 专用来与宿主(C/C++)打交道
    thread 线程类型
    ·变量的定义
    不管在任何地方使用变量,都不需要声明。并且默认都为全局变量。除非前面加local
    区分大小写
    定义变量的方法就是赋值,用 "=" 来赋值。

    A.nil
    var1=nil --nil要小写,空值,未使用过的值
    B.boolean
    布尔值有两种,true和false.
    只有 false 和 nil 才为false,所有其他类型的值,都是true,包括0,空串……
    varbo = true
    C.number
    num=40
    实数的表示方法和C类似,如: 4 0.4 4.5e-3 0.3e+20
    D.string
    字符串。
    s='hello,.hello' --最通用的方法,用双引号或单引号括起来一个字符串。
    支持转义字符:

    \a bell 响铃

    \b back space 退格

    \f form feed 换页

    \n newline 换行

    \r carriage return 回车

    \t horizontal tab 水平制表

    \v vertical tab 垂直制表

    \\ backslash 反斜杠

    \" double quote 双引号

    \' single quote 单引号

    \[ left square bracket 左方括号

    \] right square bracket 右方括号

    也可用另一种方式表示字符串,用[[ ]] 括起来的多行。

    E.Table
    关系表类型,很强大,可以把这种类型看作一个数组。C语言中的数组只能用unsigne int 来索引;在lua中,可以用任意类型作数组的索引。除了nil.
    同样,在C语言中,数组的内容只允许一种类型,在Lua中,也可以用任意类型的值来作数组的内容,除了nil。
    table定义很简单,它的主要特征是用"{"和"}"来括起一系列数据元素的。

    T1 = {} -- 定义一个空表
    T1[1]=10 -- 然后我们就可以象C语言一样来使用它了。

    T1["John"]={Age=27, Gender="Male"}
    这一句相当于:

    T1["John"]={} -- 必须先定义成一个表,还记得未定义的变量是nil类型吗
    T1["John"]["Age"]=27
    T1["John"]["Gender"]="Male"

    当表的索引是字符串的时候,我们可以简写成:
    T1.John={}
    T1.John.Age=27
    T1.John.Gender="Male"

    T1.John{Age=27, Gender="Male"}

    上面的T1定义,可以写成:
    T1=
    {

    10, -- 相当于 [1] = 10
    [100] = 40,
    John= -- 如果你原意,你还可以写成:["John"] =
    {
    Age=27, -- 如果你原意,你还可以写成:["Age"] =27
    Gender=Male -- 如果你原意,你还可以写成:["Gender"] =Male
    },

    20 -- 相当于 [2] = 20
    }

    在写的时候,需要注意三点:
    第一,所有元素之间,总是用逗号","隔开;
    第二,所有索引值都需要用"["和"]"括起来;如果是字符串,还可以去掉引号和中括号;
    第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编;
    F.Function
    函数,函数定义如下:
    function add(a,b) --add函数名,a,b为参数
    return a+b --return 用来返回结果
    end

    得前面说过,函数也是变量类型,所以,上面的函数定义,相当于:
    add=function (a,b) return a+b end
    重新给add赋值时,便表示不再使用这个函数了,可以赋值nil相当于用来清除add变量


    lua也可接受可变参数个数,用"..."来定义的:
    function sum(a,b,...) --...表示的参数,可以在函数中可使用局部变量(表)来得到:

    可以同时返回多个结果:
    function s()
    return 1,2,3,4
    end
    a,b,c,d = s() --此时,a,b,c,d=1,2,3,4各个赋值


    表类型可以拥有任意类型的值,包括函数。
    t={
    age=27 ,
    add=function(self,n) self.age=self.age + n end
    }

    print(t.age) --27
    t.add(t,10) --这句可以写成t:add(10) ,t:add(10) -- 相当于 t.add(t,10)
    print(t.age) --37

    3.1)函数的使用
    function pythagorean(a, b)
    local c2 = a^2 + b^2
    return math.sqrt(c2)
    end
    print(pythagorean(3,4))
    这里不知怎么出错了,是函数的问题吧,应该有头文件。
    奥,解决了, sqrt 前加上 math
    2)循环语句
    --loops
    for i=1,5 do
    print ('i mmmmmm'..i)
    end

    for i=10,2,-3 do
    print ('i miss u,第'..i..'天')
    end
    --输出:i miss u,第10天
    i miss u,第7天
    i miss u,第4天

    3)条件分支语句
    for i=1,5 do
    print('i is now ' .. i)
    if i < 2 then
    print('small')
    elseif i < 4 then
    print('medium')
    else
    print('big')
    end
    end

    输出:
    i is now 1

    small

    i is now 2

    medium

    i is now 3

    medium

    i is now 4

    big

    i is now 5

    big

    if只需要一个end,哪怕用了多个elseif, 也是一个end.

    4)其他的循环,while..do和repeat..until
    -_-,这教程里没有while的例子,实验了一下,竟然写了死循环
    i=0
    while i<4 do
    print(i)
    end
    end前加上自增i=i+1便好。

    repeat是重复的:一直执行,直到条件不满足。
    i=3
    repeat
    print ('a')
    i=i-1
    until
    i<0

     

     

     

     

     

     

     

     

     

  • 4楼 被遗忘者 2014-05-18

    做的笔记。

发表回复
功能维护升级中,维护完成完后将再次开放,非常抱歉给您学习造成的不便。