https://www.tutorialspoint.com/rust/rust_functions.htm
함수는 읽기, 유지보수 및 재사용이 가능한 코드의 빌딩 블록
함수는 특정 작업을 수행하기 위한 일련의 명령문
함수는 프로그램을 논리적 코드 블록으로 구성
일단 정의되면 코드에 액세스하기 위해 함수를 호출할 수 있음
함수를 사용하면 프로그램 코드를 쉽게 읽고 유지 관리할 수 있음
함수 선언은 컴파일러에게 함수의 이름, 반환 유형 및 매개변수에 대해 알림
Sr.No. | Function | Description |
---|---|---|
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
}
함수 선언은 선택적으로 매개변수/인수를 포함
매개변수는 함수에 값을 전달하는 데 사용
function_name(val1,val2,valN)
fn main(){
//calling a function
fn_hello();
}
//Defining a function
fn fn_hello(){
println!("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
}
매개변수는 함수에 값을 전달하는 방식
매개변수는 함수 서명의 일부를 형성
매개변수 값은 호출 중에 함수에 전달
명시적으로 지정하지 않는 한 함수에 전달되는 값의 수는 정의된 매개변수의 수와 일치해야 함
메서드가 호출되면 각 값 매개변수에 대해 새 저장 위치가 생성
실제 매개변수의 값이 복사
호출된 메서드 내부의 매개변수에 대한 변경 사항은 인수에 영향을 미치지 않음
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);
}
매개변수를 참조로 전달할 때는 Pass by Value와 달리 이러한 매개변수에 대한 새 저장 위치가 생성되지 않음
참조 매개변수는 메소드에 제공되는 실제 매개변수와 동일한 메모리 위치
변수 이름 앞에 & 를 붙여 매개변수 값을 참조로 전달
* 연산자는 변수 param_no가 가리키는 메모리 위치에 저장된 값에 액세스하는 데 사용
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
}
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);
}