見標題...沒有程式概念的人可能不懂這標題的意義,但記得「絕大多數我們人腦可以理解的事情,對電腦來說是沒有意義的。」
到目前為止所用的資料都有「型別」。
物件是種型別,某筆資料如果限定了只能「放入A物件」,那就不能「放入B物件」。
所以型別區分方式其實很多,物件是一種,還有所謂的「基本資料」型別。(我應該沒記錯。)
「基本資料」就是一些簡單的數值或文字(一個字符?或一串字?)。
對人腦來說,「1加2」這一串字有意義,你可以自動地將它帶入「等於多少」這樣的「處理」中。
但電腦是不行的。
「1」和「2」在文字中,對電腦來說就只是「一串文字資料的其中幾個位元資料而已」。
如果硬要將文字「1」和「2」做「相加」,做的會是「資料串合併」,而不是數學意義上的相加,最終得到的會是文字「12」。
必須要將文字轉成數值,才可以進行數學意義上的相加。
所以...對AI提出新的要求:「『間隔五秒』中,改為將InputData的value轉為數值後,設定為間隔秒數。」
InputData的value是字串,現在將它轉為數值,然後用來當成間隔的秒數。
void processQueue() {
if (_queue.isNotEmpty) {
var inputData = _queue.removeFirst();
if (inputData.type == 1 && inputData.value is String) {
// Speak the text
_utterance!.text = inputData.value;
_synthesis!.speak(_utterance!);
checkSpeaking();
} else {
// Convert the value of InputData to an integer and use it as the delay time
int delaySeconds = int.tryParse(inputData.value) ?? 5;
Future.delayed(Duration(seconds: delaySeconds), () {
processQueue();
});
}
}
}
這裡,AI自動幫我做了個安全機制,就是「如果輸入的字串無法轉成數值,則秒數設為五秒。」
int delaySeconds = int.tryParse(inputData.value) ?? 5;