这是我的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"但我修好了它,它仍然再次给我错误。救命?
答案 0 :(得分:2)
此代码中有几个错误。它会给你一个UNEXPECTED DEDENT
的错误,因为你正在混合空格和制表符,而LiveScript是一种空白严格的编程语言。所以,在使用LiveScript时避免使用括号。还要记住,在条件结构中,例如if
,您可以在之后使用then
。由于以下原因,这将无法编译:
else
关键字括号then
以确定条件function(res, passback)
中的语法错误
你有一些小问题,而不是标准化的做法:
=
代替==|~=
进行比较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."
)