Stdin, Stdout และอาร์กิวเมนต์ของกระบวนการ
สร้างโปรแกรม CLI แบบโต้ตอบ
Stdin, Stdout และอาร์กิวเมนต์ของกระบวนการ เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
สตรีมมาตรฐานสามชนิด
โปรแกรมบรรทัดคำสั่งสื่อสารผ่านช่องทางสามชนิด ได้แก่ stdin สำหรับอินพุต เอาต์พุตมาตรฐานสำหรับเอาต์พุตปกติ และเอาต์พุตข้อผิดพลาดสำหรับข้อผิดพลาด
เอาต์พุตมาตรฐานกับ print
print จะเพิ่มบรรทัดใหม่และส่งไปยังเอาต์พุตมาตรฐาน หากต้องการควบคุมได้ละเอียดขึ้น ให้เขียนโดยตรงด้วย stdout.write ซึ่งจะไม่เพิ่มบรรทัดใหม่
stdout.write('Loading');ส่งข้อผิดพลาดไปยัง stderr
ส่งคำเตือนไปยัง stderr ไม่ใช่เอาต์พุตมาตรฐาน วิธีนี้ช่วยให้เอาต์พุตจริงสะอาดเมื่อผู้ใช้ส่งเอาต์พุตของโปรแกรมไปยังที่อื่นด้วย pipe
stderr.writeln('Could not find file');อ่านอินพุตหนึ่งบรรทัด
ถามคำถามผู้ใช้ แล้วรับ answer ด้วย stdin.readLineSync โปรแกรมจะหยุดรอจนกว่าผู้ใช้จะกด Enter
final name = stdin.readLineSync();อินพุตอาจเป็นค่าว่าง
readLineSync จะคืนค่า String ที่อาจเป็นค่าว่าง หากสตรีมปิดลงโดยไม่มีอินพุต คุณจะได้รับค่า null จึงต้องจัดการกรณีนี้
final answer = stdin.readLineSync() ?? '';ลูปรับคำสั่งขนาดเล็ก
รวมการเขียนและการอ่านเข้าด้วยกันเพื่อสร้างคำสั่งโต้ตอบ แสดงคำถาม อ่านคำตอบ แล้วดำเนินการตามคำตอบ ทั้งหมดนี้ทำได้ในไม่กี่บรรทัด
stdout.write('Name? '); final n = stdin.readLineSync();อาร์กิวเมนต์บรรทัดคำสั่ง
main ของคุณสามารถรับ List ของ String args ได้ ทุกสิ่งที่ผู้ใช้พิมพ์หลังชื่อโปรแกรมจะมาอยู่ที่นั่นตามลำดับ
void main(List<String> args) { print(args); }อ่านอาร์กิวเมนต์หนึ่งรายการ
เข้าถึง args ด้วยดัชนีได้เหมือนลิสต์ทั่วไป ให้ตรวจสอบ args.isEmpty ก่อนเสมอ เพื่อไม่ให้อาร์กิวเมนต์ที่หายไปทำให้โปรแกรมหยุดทำงาน
if (args.isNotEmpty) print(args[0]);แยกวิเคราะห์แฟล็กด้วย args
สำหรับ CLI จริง แพ็กเกจ args จะเปลี่ยนแฟล็กและตัวเลือกให้เป็นผลลัพธ์ที่แยกวิเคราะห์แล้วอย่างเป็นระเบียบ แทนการจัดการดัชนีด้วยตนเอง
import 'package:args/args.dart';กำหนดรหัสการออกจากโปรแกรม
แจ้งให้เชลล์ทราบว่าการทำงานเป็นอย่างไรด้วย exit ศูนย์หมายถึงสำเร็จ ส่วนค่าอื่นหมายถึงเกิดข้อผิดพลาดสำหรับสคริปต์ที่เรียกใช้คุณ
exit(1);ปิดโหมดแสดงตัวอักษร
สำหรับรหัสผ่าน ให้ซ่อนตัวอักษรที่พิมพ์โดยกำหนด stdin.echoMode เป็น false ก่อนอ่านบรรทัด
stdin.echoMode = false;ตรวจสอบความเข้าใจ
เครื่องมือ CLI ควรส่งข้อความข้อผิดพลาดไปที่ใด เพื่อให้เอาต์พุตที่ส่งต่อด้วย pipe ยังคงสะอาด
สรุปทบทวน
ตอนนี้คุณสามารถเขียนไปยัง stdout และ stderr อ่านอินพุตด้วย stdin รับอาร์กิวเมนต์บรรทัดคำสั่ง และกำหนดรหัสการออกจากโปรแกรมได้แล้ว CLI ของคุณจึงโต้ตอบกับผู้ใช้ได้
คำถามที่พบบ่อย
บทเรียน “Stdin, Stdout และอาร์กิวเมนต์ของกระบวนการ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Stdin, Stdout และอาร์กิวเมนต์ของกระบวนการ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Stdin, Stdout และอาร์กิวเมนต์ของกระบวนการ”
สร้างโปรแกรม CLI แบบโต้ตอบ คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “Stdin, Stdout และอาร์กิวเมนต์ของกระบวนการ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านและเขียนไฟล์
- ไดเรกทอรี พาธ และ FileSystemEntity
- การสตรีมไฟล์ขนาดใหญ่
- Stdin, Stdout และอาร์กิวเมนต์ของกระบวนการ