func anything() {
print ("something")}
class joohee{
func anything() {
print ("something")
}
}
첫번째 예시에선 anything이 함수였지만,
두번째 예시에선 class안에 속해있기 때문에 메서드라고 하는것!
사용자 정의함수를 정의하는 방식
func 함수이름(매개변수1: 타입, 매개변수2: 타입 .....) -> 반환타입{
실행내용
return 반환값
}
함수를 선언하기 위해서는 func이라는 키워드를 사용해야함
func 뒤 한칸 띄고 함수의 이름을 설정
lowCamelCawe : 카멜 표기법 사용
띄어쓰기 없이 이름을 짓기 위하여 따르는 네이밍 컨벤션
단어 전체적으로 소문자를 사용하지만, 맨 첫글자를 제외한 각 합성어의 첫 글자만 대문자로 표기한다!올바른 예시) camelCase, firstNumber,
잘못된 예시) camel_case(스네이크표기법)
func hellojoohee() -> String {
return "안녕, 주희!"
}
print(hellojoohee()) // 안녕, 주희!
func welcome(myname: String, yourname: String) -> String {
"안녕하세요 \(yourname)님! 저는 \(myname)라고 합니다!"
}
print(welcome(myname: "주희", yourname: "미진"))
// 안녕하세요 미진님! 저는 주희라고 합니다!
Argument Label : 함수를 호출할 때 사용하는 이름
Parameter Name : 함수내에서 사용할 파라미터의 이름
예시
위 예시의 함수에서 Argument Label과 Parameter Name를 각각 찾아보면
Argument Label = 불러
Parameter Name = 이름
Argument Label 불러는 함수를 호출할 때 사용되고
Parameter Name 이름은 받은 파라미터를 함수 내부에서 사용할때 사용한다!
중요!!
print 함수를 사용할때 보통 우리는
print("joohee")
로 Argument Label없이 사용해왔다!!
이건 함수의 원형을 확인하면 알 수 있다
예시
func calculate(_ operator: Character....)
파라미터가 없다고 ()를 샹략하면 절대 안된다!!
빈 괄호를 필수로 명시해 줄 것!!
위 방법대로 호출하면 되는데 parameters에는 Argument Label이 들어감!
(매개변수 타입의 나열) -> 반환타입
func welcome(name: Stirng, times: Int) -> String {
// 구현부
}
func sayHelloToFriends(me: String, names: String...) -> String {
// 구현부
}
func Goodbye() {
// 구현부
}
3가지는 모두 같은 표현임
(Void) -> Void () -> Void () -> ()
func greet(name: String) -> String {
if name == "JJOOE" {
return "Oh wow!"
} else {
return "Hello, \(name)"
}
}
func greet(name: String) -> String {
if name == "JJOOE" {
"Oh wow!"
} else {
"Hello, \(name)"
}
}
//return이 빠졌기 때문에 런타임 오류가 생김
위 코드를 삼항연산자로 변경
func greet(name: String) -> String {
name == "JJOOE" ? "Oh wow!" : "Hello, \(name)"
}
//매개변수가 없다면 ()으로 작성
func 함수이름() -> 반환타입 {
//함수 구현부
return 반환값
}
func 함수이름 (매개변수1이름: 매개변수1타입, 매개변수2이름: 매겨변수2타입 ...) -> Void {
//함수 구현부
return 반환값
}
func 함수이름 (매개변수1이름: 매개변수1타입, 매개변수2이름: 매겨변수2타입 ...) {
//함수 구현부
}
func 함수이름() -> Void {
//함수 구현부
}
func 함수이름() {
//함수 구현부
}
func HelloWorld() {
print("Hello, World!")
}
HelloWorld() //Hello, World!
func welcome(me myname: String, you yourname: String) {
print("안녕하세요 저는 \(myname) 입니다! 잘 부탁드려요 \(yourname)씨! ")
}
welcome(me: "주희 you: "미진") // 안녕하세요 저는 주희니다! 잘 부탁드려요 미진씨!
func sayGoodbye() -> Void {
print("Good bye!")
}
sayGoodbye() // Good bye!
//반환값이 없어 코드가 짧다면 이렇게 한줄로 표현하는것이 좋습니다.
func hello() -> Void { print("hello") }
func bye() { print("bye") }
hello() // hello
bye() // bye