與朋友一起,我們正在製作一種名爲Simp的新語言。它應該是一個簡單但現代的腳本語言,它具有良好和直觀的語法。下面是一個簡單的例子:語言設計:比較兩個值時的隱式轉換
var sum = 0
for i in 3..999 {
if (i % 3 == 0) or (i % 5 == 0) {
sum += i
}
}
say sum
現在,我們正站在一個問題,如果我們比較兩個值時,應使用隱式轉換。具體來說,下面的程序應該輸出什麼?
# 1.
say (1 == '1')
# 2.
var x = 1
switch (x) {
case '1': say true; break;
case 1: say false; break;
}
# 3.
if ('1') say true;
else say false;
如果1.
輸出的話,我們也許應該還包括===
運營商太檢查類型。但我不是那個運營商的忠實粉絲。
如果由於比較了兩種不同類型而引發錯誤,那很好。多一點打字(1 == int('1')
)解決了這個問題,使代碼更清晰。但在這種情況下,如何爲2.
和3.
表現?
你推薦什麼解決方案?
謝謝,它幫助。我們可能會用'=='來檢查類型。但是簡單地說'if(x){}'將對'x'執行隱式轉換(對bool),並且像''「,[],0'這樣的東西評估爲false。因此,'if(x){}'將不如'if(x == true){}'嚴格,這通常意味着不那麼嚴格。也許,我們也會擺脫括號{},但這是另一回事:-)。 – clime 2012-02-10 21:44:45
順便說一句。我和我的朋友,我們都愛哈斯克爾!這將是顯而易見的:-)。我認爲我們接近真的很酷。請保持你的指尖爲我們:-)。 – clime 2012-02-10 21:52:56
哈哈,當然!很高興知道你還在爲此工作。期待看到它的結果 – TheIronKnuckle 2012-02-11 04:43:12