因為是「讓外行人也能用AI寫程式」,所以必須講的簡單好懂。
回頭看看曾經使用過的範例...
import 'package:flutter_tts/flutter_tts.dart';
final flutterTts = FlutterTts();
Future<void> _speak(String text) async {
await flutterTts.speak(text);
}
void _incrementCounter() {
setState(() {
_counter++;
});
_speak('This is my text to speech demo');
}
這個範例其實包含了三個東西,一個叫做「import」,另一個是「參數宣吿」,最後一個是「函數」。
這是「import」。
import 'package:flutter_tts/flutter_tts.dart';
這是「參數」。
final flutterTts = FlutterTts();
這是「函數」。
Future<void> _speak(String text) async {
await flutterTts.speak(text);
}
這也是「函數」。
void _incrementCounter() {
setState(() {
_counter++;
});
_speak('This is my text to speech demo');
}
知道這個的意義何在?
別忘了這些是AI提供的程式碼,你必須要知道將它複製貼上到什麼地方。
「import」要貼到「import」專屬的地方。通常都是一支程式碼(整篇文件檔)的最上端。
它的功能是告訴電腦這隻程式會需要使用到哪些程式提供的功能與資源。
然後是「參數」。這個詞是在程式設計理念還比較原始時就定義的,所以它的詞面意義跟它實際的作用是不符的。
參數除了可能是數值以外,也可能是其他程式的功能與資源。
這個範例裡的參數其實是「flutter_tts.dart」這支程式裡的某種名叫物件的資源。
(晚點解釋什麼叫物件。)
要注意,「參數」跟「import」通常都是一行結束,而且結尾有個「;」。(萬一、如果、假設...你寫的很長,然後不小心在中間按了個「Enter」把它切成兩行了,別擔心,程式碼還是可以正確轉換成程式的。這就是「;」的功能。)
相較之下,函數就不一樣,它會佔很多行,而且不是用「;」做結尾。
函數的意義在於「這段程式碼會被經常使用到,所以不如乾脆將它集中起來,給個名字後,方便快速重複使用。」
所以函數的開頭有「名稱」與「結果的類別」,其次就是用來決定它真正內容開始與結束的「{」「}」。
「名稱」與「結果的類別」?有興趣以後再解釋。
關於「{」「}」有三個萬年不變的鐵則。
1.有「{」就一定會有「}」。
2.「{」一定在前。
3.「{」「}」裡面還可以包「{」「}」。
所以第一個函數只有一組「{」「}」,但第二個函數就包含了兩組。
以後可能會看到很多的包含型態,例如.....
{
{
{}
}
}
或是
{
{
}
{
}
}
而如何找到這三者在一組程式碼文件中應該去的正確位置?...下一篇在介紹啦!