2014-12-03 21 views
2

我試圖擴展我在網上找到的解釋器。解釋器將一個數字作爲唯一參數並將其作爲字符串返回(1 -> one, 2.3 -> two point three...等)。我擴展了它的'語言',使其包含操作員名稱(如「TIMES」和「PLUS」)。拿一個數字參數並保持其形式?

現在,這是我的問題。爲了讓這些操作符成立,我認爲唯一的方法就是不要將參數作爲數字傳遞,而是將其作爲字符串傳遞。例如,如果我要將3*5-23.2傳遞給該函數,我希望它返回three TIMES five MINUS twenty three point two。相反,我得到negative eight point two,這是前一個參數的評估形式。

有沒有一種方法來操縱一個參數,以便在它被評估之前變成一個字符串?或者我必須訴諸強迫用戶輸入一個字符串(這是一件壞事?)?

編輯1

我的代碼是基於控制檯的;用戶訪問它像這樣:

> wordify(34) 
"thirty four" 
> wordify(3.4) 
"three point four" 
> wordify(Math.PI) 
"three point one four one five nine two six..." // omitted for convenience 

如果這是從一個<input>元素抓住,我就沒有太多的麻煩(如默認將是一個字符串開始),唉,這是並非如此。

+0

我們需要看一些代碼:解釋器(可能只是展示問題的部分)和您的擴展。否則,我們只是猜測你可能會做些什麼來解決你的問題。 – 2014-12-03 23:29:49

+0

假設他們傳遞給你'some_variable'或'Math.sqrt(4)'。應該發生什麼? – user2357112 2014-12-03 23:30:39

+0

@ user2357112如果some_variable是一個字符串,我當前的代碼將返回「not a number」; Math.sqrt(4)返回「two」。 – 2014-12-03 23:31:26

回答

2

除了向函數傳遞一個字符串外,沒有別的辦法了,因爲在執行函數調用之前必須評估所有參數。你爲什麼會考慮期待一個字符串輸入是一件壞事?如果該值是從HTML輸入字段派生的,它將始終是一個字符串,除非它被明確評估。

+0

就是這樣 - 它不是來自''元素。並且將它作爲字符串傳遞意味着會爲用戶輸入更多的信息(儘管這並不完全確定_how_壞)。 – 2014-12-03 23:36:35

+1

所以用戶是這種情況下的程序員,對吧?程序員必須意識到一個函數調用會首先評估所有參數。這是大多數腳本和編程語言應用的基本概念。在兩個引號之間插入輸入是否真的有很多工作要做? – 2014-12-03 23:41:59

+0

積分..謝謝! – 2014-12-03 23:43:35

相關問題