搜索定义

时间:2014-08-26 17:37:27

标签: livescript

这是我的lifecript代码:

                        if (res = json.msg.match /^iSearchup\s(.*)$/i)? then
                            getReq("[url='http://urbanscraper.herokuapp.com/define/'][http://urbanscraper.herokuapp.com/define/[/url]" + encodeURIComponent(msg.splice(1, msg.length - 1).join(" ")) + ".json", function(res, passback)
                            if (res.word && res.definition){
                                @socket.send JSON.stringify {
                                    type: \pmsg
                                    nick: 'iPoddy:'
                                    msg: json.from + ": " + res.word + " - " + res.definition
                                }
                            }
                            else {
                                @socket.send JSON.stringify {
                                    type: \pmsg
                                    nick: 'iPoddy:'
                                    msg: json.from + ":  Sorry, no results were returned."
                                }
                            }

这是我的代码。它给了我错误" dedent"但我修好了它,它仍然再次给我错误。救命?

1 个答案:

答案 0 :(得分:2)

此代码中有几个错误。它会给你一个UNEXPECTED DEDENT的错误,因为你正在混合空格和制表符,而LiveScript是一种空白严格的编程语言。所以,在使用LiveScript时避免使用括号。还要记住,在条件结构中,例如if,您可以在之后使用then。由于以下原因,这将无法编译:

  • 混合空格和标签
  • else关键字括号
  • 在表达式后期望then以确定条件
  • {li> function(res, passback) 中的语法错误

你有一些问题,而不是标准化的做法:

  • 使用赋值运算符=代替==|~=进行比较
  • 使用无效的lambda表达式作为function(res, passback)
  • 中的参数
  • 使用+联接,而不是++
  • 使用&&运算符代替and
  • 使用括号在第一个条件
  • 中封装单个表达式

这应该运作良好:

if res ~= json.msg.match /^iSearchup\s(.*)$/i then
    url = "[url='http://urbanscraper.herokuapp.com/define/'][http://urbanscraper.herokuapp.com/define/[/url]"
    getReq <| url ++ encodeURIComponent(msg.splice(1 msg.length - 1).join(" ")) ++ ".json"
    if res.word && res.definition then
        @socket.send <| JSON.stringify(
            type: \pmsg
            nick: 'iPoddy:'
            msg: json.from ++ ": " ++ res.word ++ " - " ++ res.definition
        )
    else
        @socket.send <| JSON.stringify (
            type: \pmsg
            nick: 'iPoddy:'
        msg: json.from ++ ":  Sorry, no results were returned."
        )