สนิม - หน้าที่
ฟังก์ชันเป็นส่วนประกอบของรหัสที่อ่านได้บำรุงรักษาและใช้ซ้ำได้ ฟังก์ชันคือชุดของคำสั่งเพื่อดำเนินงานเฉพาะ ฟังก์ชั่นจัดระเบียบโปรแกรมเป็นบล็อกตรรกะของโค้ด เมื่อกำหนดแล้วฟังก์ชันอาจถูกเรียกใช้เพื่อเข้าถึงรหัส สิ่งนี้ทำให้โค้ดสามารถใช้ซ้ำได้ ยิ่งไปกว่านั้นฟังก์ชั่นช่วยให้อ่านและบำรุงรักษาโค้ดของโปรแกรมได้ง่าย
การประกาศฟังก์ชันจะบอกคอมไพลเลอร์เกี่ยวกับชื่อของฟังก์ชันประเภทการส่งคืนและพารามิเตอร์ นิยามของฟังก์ชันระบุเนื้อความที่แท้จริงของฟังก์ชัน
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | Defining a function นิยามฟังก์ชัน TA ระบุสิ่งที่ต้องทำและวิธีการทำงาน |
2 | Calling or invoking a Function ต้องมีการเรียกใช้ฟังก์ชันเพื่อดำเนินการ |
3 | Returning Functions ฟังก์ชั่นอาจส่งคืนค่าพร้อมกับการควบคุมกลับไปยังผู้เรียก |
4 | Parameterized Function พารามิเตอร์เป็นกลไกในการส่งผ่านค่าไปยังฟังก์ชัน |
การกำหนดฟังก์ชัน
นิยามฟังก์ชันระบุสิ่งที่จะทำและวิธีการทำงาน ก่อนที่จะใช้ฟังก์ชันจะต้องมีการกำหนด เนื้อความของฟังก์ชันประกอบด้วยรหัสที่ควรดำเนินการโดยฟังก์ชัน กฎสำหรับการตั้งชื่อฟังก์ชันจะคล้ายกับตัวแปร ฟังก์ชันถูกกำหนดโดยใช้fnคำสำคัญ. ไวยากรณ์สำหรับการกำหนดฟังก์ชันมาตรฐานได้รับด้านล่าง
ไวยากรณ์
fn function_name(param1,param2..paramN) {
// function body
}
การประกาศฟังก์ชันสามารถเลือกพารามิเตอร์ / อาร์กิวเมนต์ได้ พารามิเตอร์ใช้เพื่อส่งผ่านค่าไปยังฟังก์ชัน
ตัวอย่าง - นิยามฟังก์ชันอย่างง่าย
//Defining a function
fn fn_hello(){
println!("hello from function fn_hello ");
}
เรียกใช้ฟังก์ชัน
ต้องมีการเรียกใช้ฟังก์ชันเพื่อดำเนินการ กระบวนการนี้เรียกว่าfunction invocation. ควรส่งค่าสำหรับพารามิเตอร์เมื่อเรียกใช้ฟังก์ชัน ฟังก์ชันที่เรียกใช้ฟังก์ชันอื่นเรียกว่าcaller function.
ไวยากรณ์
function_name(val1,val2,valN)
ตัวอย่าง: การเรียกใช้ฟังก์ชัน
fn main(){
//calling a function
fn_hello();
}
ที่นี่main ()คือฟังก์ชันผู้โทร
ภาพประกอบ
ตัวอย่างต่อไปนี้กำหนดฟังก์ชัน fn_hello(). ฟังก์ชันจะพิมพ์ข้อความไปยังคอนโซล main()ฟังก์ชั่นเรียกfn_hello ()ฟังก์ชั่น
fn main(){
//calling a function
fn_hello();
}
//Defining a function
fn fn_hello(){
println!("hello from function fn_hello ");
}
เอาต์พุต
hello from function fn_hello
การส่งคืนค่าจากฟังก์ชัน
ฟังก์ชันอาจส่งคืนค่าพร้อมกับการควบคุมกลับไปยังผู้เรียก ฟังก์ชันดังกล่าวเรียกว่าฟังก์ชันการส่งคืน
ไวยากรณ์
สามารถใช้ไวยากรณ์อย่างใดอย่างหนึ่งต่อไปนี้เพื่อกำหนดฟังก์ชันที่มีชนิดการส่งคืน
ด้วยคำสั่งส่งคืน
// Syntax1
fn function_name() -> return_type {
//statements
return value;
}
วากยสัมพันธ์ชวเลขโดยไม่มีคำสั่งส่งคืน
//Syntax2
fn function_name() -> return_type {
value //no semicolon means this value is returned
}
ภาพประกอบ
fn main(){
println!("pi value is {}",get_pi());
}
fn get_pi()->f64 {
22.0/7.0
}
เอาต์พุต
pi value is 3.142857142857143
ฟังก์ชันที่มีพารามิเตอร์
พารามิเตอร์เป็นกลไกในการส่งผ่านค่าไปยังฟังก์ชัน พารามิเตอร์เป็นส่วนหนึ่งของลายเซ็นของฟังก์ชัน ค่าพารามิเตอร์จะถูกส่งไปยังฟังก์ชันระหว่างการเรียกใช้ จำนวนค่าที่ส่งผ่านไปยังฟังก์ชันจะต้องตรงกับจำนวนพารามิเตอร์ที่กำหนดไว้เว้นแต่จะระบุไว้อย่างชัดเจน
พารามิเตอร์สามารถส่งผ่านไปยังฟังก์ชันโดยใช้หนึ่งในเทคนิคต่อไปนี้ -
ผ่านค่า
เมื่อมีการเรียกใช้เมธอดตำแหน่งหน่วยเก็บข้อมูลใหม่จะถูกสร้างขึ้นสำหรับแต่ละพารามิเตอร์ค่า ค่าของพารามิเตอร์จริงจะถูกคัดลอกลงในค่าเหล่านี้ ดังนั้นการเปลี่ยนแปลงที่เกิดขึ้นกับพารามิเตอร์ภายในวิธีการเรียกใช้จึงไม่มีผลต่ออาร์กิวเมนต์
ตัวอย่างต่อไปนี้ประกาศตัวแปร no ซึ่งเริ่มต้นคือ 5 ตัวแปรจะถูกส่งผ่านเป็นพารามิเตอร์ (ตามค่า) ไปยัง mutate_no_to_zero()functionnction ซึ่งเปลี่ยนค่าเป็นศูนย์ หลังจากการเรียกใช้ฟังก์ชันเมื่อการควบคุมกลับไปที่เมธอดหลักค่าจะเหมือนเดิม
fn main(){
let no:i32 = 5;
mutate_no_to_zero(no);
println!("The value of no is:{}",no);
}
fn mutate_no_to_zero(mut param_no: i32) {
param_no = param_no*0;
println!("param_no value is :{}",param_no);
}
เอาต์พุต
param_no value is :0
The value of no is:5
ผ่านการอ้างอิง
เมื่อคุณส่งผ่านพารามิเตอร์โดยการอ้างอิงซึ่งแตกต่างจากพารามิเตอร์ค่าตำแหน่งที่เก็บข้อมูลใหม่จะไม่ถูกสร้างขึ้นสำหรับพารามิเตอร์เหล่านี้ พารามิเตอร์อ้างอิงแสดงตำแหน่งหน่วยความจำเดียวกันกับพารามิเตอร์จริงที่ระบุให้กับเมธอด ค่าพารามิเตอร์สามารถส่งผ่านโดยการอ้างอิงโดยนำหน้าชื่อตัวแปรด้วย& .
ในตัวอย่างด้านล่างเรามีตัวแปรnoซึ่งเริ่มต้นคือ 5 การอ้างอิงถึงตัวแปร no จะถูกส่งไปยังmutate_no_to_zero()ฟังก์ชัน ฟังก์ชันทำงานบนตัวแปรดั้งเดิม หลังจากการเรียกใช้ฟังก์ชันเมื่อการควบคุมกลับไปที่เมธอดหลักค่าของตัวแปรดั้งเดิมจะเป็นศูนย์
fn main() {
let mut no:i32 = 5;
mutate_no_to_zero(&mut no);
println!("The value of no is:{}",no);
}
fn mutate_no_to_zero(param_no:&mut i32){
*param_no = 0; //de reference
}
ตัวดำเนินการ * ใช้เพื่อเข้าถึงค่าที่เก็บไว้ในตำแหน่งหน่วยความจำที่ตัวแปร param_noชี้ไปที่ สิ่งนี้เรียกอีกอย่างว่า dereferencing
ผลลัพธ์จะเป็น -
The value of no is 0.
ส่งสตริงไปยังฟังก์ชัน
ฟังก์ชันmain ()ส่งผ่านวัตถุสตริงไปยังฟังก์ชันdisplay ()
fn main(){
let name:String = String::from("TutorialsPoint");
display(name);
//cannot access name after display
}
fn display(param_name:String){
println!("param_name value is :{}",param_name);
}
เอาต์พุต
param_name value is :TutorialsPoint