2010-10-27 69 views
2

嘗試寫賽特一個Lua腳本(類似lua-users wiki: Scite Comment Box),當我寫了下面的一段代碼:Scite Lua:字符串比較引發「嘗試調用字符串值」?

fchars = string.sub(line, 1, 3) 

if fchars == "//" or fchars == "##" 
    print "got it" 
end 

...編譯失敗與「attempt to call a string value」。

我曾嘗試不同的變種,如:

assert(ktest = (("//" == fchars) or ("##" == fchars))) 

...並在我看來,當我嘗試使用logical operatoror」做一個「複合」布爾表達式,編譯失敗。

 

所以,我會怎麼做在Lua上述檢查?也許上面的類C語法根本不被支持 - 我應該使用類似match的東西來代替?

 

預先感謝任何答案,
乾杯!

回答

5

對我來說,以下的罰款:

line = "//thisisatest" 

fchars = string.sub(line, 1, 2) -- I assume you meant 1,2 since // and ## 
           -- are only 2 characters long 

if fchars == "//" or fchars == "##" then -- you're missing 'then' 
    print("got it!") 
end 
+0

感謝約翰 - 似乎我們在同一時間寫,所以我錯過了你的答案在第一:)順便說一句,重新:「1,2」 - 我讀了「在[Lua編程:27.2](http://www.lua.org/pil/27.2.html)(http://www.lua.org/pil/27.2.html)中的字符串s的子字符串範圍從位置i到j(含)'「,並且在這裏記住字符串是1-基於:)乾杯! – sdaau 2010-10-27 19:30:21

3

Pfffft ....語法錯誤 - 忘記then月底:

if fchars == "//" or fchars == "##" then 
    print "got it" 
end 

乾杯!

+0

注 - 甚至還可能會出現此錯誤,如果你已經記住了'then',但你是用說的錯誤'<>'或'= '作爲不等於關係的運算符,而不是正確的'〜='([Lua:5.0參考手冊])(http://www.lua.org/manual/5.0/manual.html)混淆錯誤信息,如果我可以添加:) – sdaau 2010-11-01 10:06:33