0Pricing
Dart Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอ่านและเขียนไฟล์
  2. ไดเรกทอรี พาธ และ FileSystemEntity
  3. การสตรีมไฟล์ขนาดใหญ่
  4. Stdin, Stdout และอาร์กิวเมนต์ของกระบวนการ
← กลับไปที่ Dart Academy