iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
生成式 AI

用AI寫程式也是要點本事的系列 第 28

轉換資料(將文字變成數值)

  • 分享至 

  • xImage
  •  

見標題...沒有程式概念的人可能不懂這標題的意義,但記得「絕大多數我們人腦可以理解的事情,對電腦來說是沒有意義的。」

到目前為止所用的資料都有「型別」。
物件是種型別,某筆資料如果限定了只能「放入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;


上一篇
按照Spinner的選項內容新增不同的資料
下一篇
[插播]Azure也有文字轉語音???
系列文
用AI寫程式也是要點本事的30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言