พื้นฐาน clap
การแยกวิเคราะห์อาร์กิวเมนต์
พื้นฐาน clap เป็นบทเรียน Learn Rust Coding ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn Rust Coding และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องใช้ clap
clap (ตัวแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง) เป็นไลบรารีมาตรฐานโดยพฤตินัยสำหรับสร้าง CLI ใน Rust
- แยกวิเคราะห์อาร์กิวเมนต์ แฟล็ก และตัวเลือก
- สร้าง
--helpและ--versionโดยอัตโนมัติ - ตรวจสอบอินพุตและรายงานข้อผิดพลาดที่เข้าใจง่าย
หากไม่มีไลบรารีนี้ คุณต้องวนซ้ำด้วยตนเองผ่าน std::env::args() และจัดการกรณีขอบทั้งหมดเอง
อ่าน args ด้วยตนเอง
ก่อนเลือกใช้ clap การได้เห็นแนวทางดิบจะช่วยให้เข้าใจ std::env::args() ให้ตัววนซ้ำที่รายการแรกคือชื่อโปรแกรม
fn main() {
let args: Vec<String> = std::env::args().collect();
println!("Program: {}", args[0]);
println!("Got {} extra arg(s)", args.len() - 1);
}เพิ่ม clap ลงใน Cargo.toml
หากต้องการใช้ clap ให้ประกาศเป็นสิ่งที่ต้องพึ่งพา ฟีเจอร์ derive จะเปิดใช้ API ที่อาศัยมาโคร
cargo add clap --features derive
ขั้นตอนนี้ทำงานในเทอร์มินัลและแก้ไขไฟล์โครงการของคุณ จึงไม่ใช่สิ่งที่เราจะเรียกใช้ที่นี่
[dependencies]
clap = { version = "4", features = ["derive"] }API แบบตัวสร้าง
clap มีสองรูปแบบ API แบบตัวสร้าง จะสร้าง Command ขณะทำงานด้วยการเรียกเมธอดต่อกัน
use clap::{Command, Arg};
fn main() {
let cmd = Command::new("greet")
.arg(Arg::new("name"));
let matches = cmd.get_matches();
// access values from matches
}อาร์กิวเมนต์ตามตำแหน่ง
อาร์กิวเมนต์ตามตำแหน่งระบุด้วยลำดับ ไม่ใช่แฟล็ก ในที่นี้ name จะถูกอ่านโดยตรงจากบรรทัดคำสั่ง
greet Aliceกำหนด name เป็น Alice
use clap::{Command, Arg};
fn main() {
let m = Command::new("greet")
.arg(Arg::new("name").required(true))
.get_matches();
let name = m.get_one::<String>("name").unwrap();
println!("Hello, {}!", name);
}แฟล็กที่ไม่บังคับ
แฟล็กคือตัวสลับค่าบูลีน ใช้ ArgAction::SetTrue เพื่อให้การมีแฟล็กพลิกค่า bool
--loudเปิดแฟล็ก
use clap::{Command, Arg, ArgAction};
fn main() {
let m = Command::new("greet")
.arg(Arg::new("loud").long("loud").action(ArgAction::SetTrue))
.get_matches();
let loud = m.get_flag("loud");
println!("loud = {}", loud);
}ตัวเลือกที่มีค่า
ตัวเลือกรับค่า เช่น --count 3 กำหนดชื่อแบบ short และ long เพื่อให้ใช้งานสะดวก
use clap::{Command, Arg};
fn main() {
let m = Command::new("greet")
.arg(Arg::new("count").short('c').long("count"))
.get_matches();
if let Some(c) = m.get_one::<String>("count") {
println!("count = {}", c);
}
}ค่าเริ่มต้น
กำหนดค่าทดแทนให้กับอาร์กิวเมนต์ด้วย default_value เพื่อให้ผู้ใช้ละเว้นอาร์กิวเมนต์นั้นได้
- หากไม่มี
--countค่าจะกลายเป็น 1
use clap::{Command, Arg};
fn main() {
let m = Command::new("greet")
.arg(Arg::new("count").long("count").default_value("1"))
.get_matches();
let count = m.get_one::<String>("count").unwrap();
println!("count = {}", count);
}จำลองผลลัพธ์
แม้จะไม่ได้ติดตั้ง clap เราก็จำลองลักษณะของค่าที่แยกวิเคราะห์แล้วได้ ตัวอย่างนี้ใช้ Rust แบบธรรมดาแทน เพื่อแสดงตรรกะที่ clap จัดการให้เรา
fn main() {
let name = "Alice";
let count: u32 = 3;
for _ in 0..count {
println!("Hello, {}!", name);
}
}ความช่วยเหลือที่สร้างโดยอัตโนมัติ
clap สร้าง --help ให้โดยไม่คิดค่าใช้จ่ายจากข้อมูลเมตาของอาร์กิวเมนต์ เพิ่มสตริง about และ help เพื่อให้มีประโยชน์มากขึ้น
use clap::{Command, Arg};
fn main() {
Command::new("greet")
.about("Greets a person")
.arg(Arg::new("name").help("Who to greet"))
.get_matches();
}แฟล็กเวอร์ชัน
กำหนดเวอร์ชันเพียงครั้งเดียว แล้ว clap จะเชื่อมการทำงานของ --version ให้ มาโคร crate_version! จะดึงค่าจาก Cargo.toml
use clap::Command;
fn main() {
Command::new("greet")
.version("1.0.0")
.get_matches();
}ตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจพื้นฐานของ clap
สรุปทบทวน
คุณได้เรียนรู้พื้นฐานของ clap:
- เพิ่มไลบรารีด้วยฟีเจอร์
derive - API แบบตัวสร้างใช้
CommandและArg - อาร์กิวเมนต์ตามตำแหน่งใช้ลำดับ แฟล็กใช้
SetTrueและตัวเลือกรับค่า default_valueกำหนดค่าทดแทน--helpและ--versionถูกสร้างโดยอัตโนมัติ
ถัดไป คุณจะจัดโครงสร้าง CLI ขนาดใหญ่ขึ้นด้วยคำสั่งย่อย
คำถามที่พบบ่อย
บทเรียน “พื้นฐาน clap” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐาน clap” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn Rust Coding ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน clap”
การแยกวิเคราะห์อาร์กิวเมนต์ คุณปฏิบัติ Learn Rust Coding ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn Rust Coding หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn Rust Coding บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐาน clap” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn Rust Coding นี้ได้ไหม
ได้ บทเรียน Learn Rust Coding ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน clap
- คำสั่งย่อย
- API สำหรับ derive
- การตรวจสอบและวิธีใช้