語法新增 |
|
Script 等其他語言相同的語法。在 Lua 來源進行下列變更後,我們可以撰寫
if !b then a = c end if a != c then a = c end
而且它仍舊可用於原先
if not b then a = c end if a ~= c then a = c end
我同意使用 !=
,特別是因為 ~=
沒有在其他地方廣泛使用,而且容易與 Perl 的 =~
弄混。然而,將 !
用於 not
很不妥,因為這違背了 Lua 使用單字而非符號的規則(請比較「and」和「or」)。 -- ReubenThomas
~
是邏輯非定的有效數學符號 [1]。在程式語言中,它的使用較不普遍。然而,即使在像 C 這樣的語言中,~
也用於密切相關的按位非定,而 !
則用於邏輯非定,!=
則用於不等於(即 !(a==b)
)。因此,Lua 的 ~=
有小小的相似性。然而,C 在按位和邏輯運算中不一致:&
和 &&
、|
和 ||
,以及 ~
和 !
,何不將 ~~
用於邏輯非定,以避免使用不同的字元?在 Lua 中,您也可以採用 not(a==b)
的替代方式。 -- DavidManura
或者也許可以像 Basic 一樣改用 <>
,這樣一來,所有測試都只需要使用三個比較字元 <, >, =
。~
字元目前在 Lua 中是獨一無二的,因為它是唯一以多個字元字彙項目開頭,但本身卻不是一個字彙項目的字元!此外,<>
符合 <=
的用法,因此 x<=y
表示 x<y 或 x=y
,而 x<>y
表示 x<y 或 x>y
。前後一致。 -- PeterHill
<>
用於不等於是個壞主意。對於某些資料而言,<
和 >
可能完全沒有意義。例如,對於空間中的點,您可以定義等於和不等於,但沒有線性順序。然而,您可能仍希望對點的(不)等於進行測試,而 <>
可能令人誤解。 -- Hgr只有在您有完整的 [2] 順序時,它才具有一致性。否則 <
、>
及 ==
這三個都可能為 false。儘管 ~
在我目前用來撰寫此訊息的西班牙 Windows 鍵盤上,輸入時討厭地困難,但我已經習慣了它 -- 而且我絕對不想要變更所有我已經四處使用的程式碼。總有一天我們都會擁有 Unicode,並可以使用 &U+2260;
,而這個 Wiki 無法呈現這個字元。 -- RiciLake
使用 !
作為否定,這對其他語言的程式設計員來說,一定會讓他們覺得 Lua 少了一點討厭。還有哪些語言把 ~
當作否定?這很好奇,尤其是當其他語言會把 ~
拿來做否定時。沒有人說要替換 ~
作為否定,只需要加 !
當作備註。因此,你既有的程式碼能繼續完美運作,而不需要任何更動。--DanHollis?
對於這一點而言:根據 [跨語言語法] 頁面,Smalltalk、Dylan 和 Matlab 全部都把 ~=
用於某種不等式。(它們也會把 ~
當作邏輯非的開頭)。就我的理解,用 ~
開頭來寫邏輯否定(數學意義上),相當常見,因此把 ~=
用來表示不相等,看起來就像是很自然的延伸。--TaylorVenable
如上面建議的一樣,同時支援兩個符號,只會讓原本簡單的語言變得複雜。-- DavidManura
在某些鍵盤上,~
很難找也很難用。例如,在 azerty 上,你必須按 [alt gr]+[3]+[任何按鍵],才能打出一個。-- 匿名
Wiki 備註:這個頁面的名稱 (SyntaxAddition) 不具有太好的說明性。或許 NegationSyntax? 會比較好。