function
코드블럭을 하나의 function 안에 넣어서,
해당 함수의 이름만 호출하면, 코드블럭 안의 코드들이 실행된다.
- Create an Function (without input)
func funcName () { //do stuff }
- Create an Function (with input) : input == parameter
funt funcName (parameterName: DataType) { //do something with input}
ex)
func greeting (whoToGreet: String) {
print("Hello \(whoToGreet)")
}
- Call the Function
funcName ()
funcName (parameterName: Argument)
ex)
greeting (whoToGreet: "Angela")
Challenge )
a, b 값을 입력받아 사칙연산을 수행하도록 코드 작성
//Don't change this code:
func calculator() {
let a = Int(readLine()!)! //First input
let b = Int(readLine()!)! //Second input
add(n1: a, n2: b)
subtract(n1: a, n2: b)
multiply(n1: a, n2: b)
divide(n1: a, n2: b)
}
//Write your code below this line to make the above function calls work.
func add(n1: Int, n2: Int) {
print (n1 + n2)
}
func subtract (n1: Int, n2: Int) {
print (n1 - n2)
}
func multiply (n1: Int, n2: Int) {
print (n1 * n2)
}
func divide (n1: Int, n2: Int) {
print (Double(n1) / Double(n2))
}
Xylophone app에서,
각 버튼마다 IBAction을 만든 다음 각각 다른 소리가 나게 만드는 방법도 있겠지만
하나의 IBAction에 여러 개의 버튼을 연결하고,
각각의 버튼을 누를 때마다 다른 소리가 나도록 하려는 것이 오늘의 목표이다.
C 버튼과 연결해 만들어두었던 IBAction 왼쪽에 있는
+ 버튼에 커서를 갖다대면 어떤 element와 연결되어있는지 볼 수 있는데,
그 버튼을 드래그해서 다른 element에 연결시켜주면 지금 연결된 것에 추가적으로 연결을 만들 수 있다.
이 방법으로 나머지 버튼들도 연결시켜준다.
여기까지 진행한 뒤에 테스트를 해 보면,
어플에서 어떤 버튼을 눌러도 'C.wav' 사운드파일이 실행되는 것을 확인할 수 있다.
각각의 버튼에 맞는 사운드가 출력되도록 만들기 위해
먼저,
현재 눌러지는 버튼의 title을 따오는 법을 스택오버플로우에서 검색했는데
~~~.currentTitle을 이용하는 것이다.
현재 IBAction func의 input으로 들어가는 값이 sender이므로
sender.currentTitle이 현재 눌러진 버튼의 title이 된다.
이제 이 값을 playSound function에서 사용해줘야 할텐데...
Challenge )
playSound function의 코드블럭을 수정하여, 'Sound name'을 입력값으로 받아서,
각각의 버튼을 누를 때마다 알맞은 사운드파일이 출력되도록 할 것
##참고
data type => optional String
값이 존재하지 않을 수 있기 때문에 컴파일이 바로 되지 않고,
!을 뒤에 붙여줘서 강제로 컴파일이 진행되도록 한다.
지금같은 경우 각 버튼마다 title이 존재하는 것을 확인했기 때문에 !를 써도 된다.
'Today I Learned' 카테고리의 다른 글
20210611 Egg Timer project -2 (0) | 2021.06.12 |
---|---|
20210610 Egg Timer project -1 (0) | 2021.06.11 |
20210604 Apple Documentation with Xylophone app -1 (0) | 2021.06.05 |
20210603 - StackView (0) | 2021.06.04 |
20210602 - Auto Layout & Responsive UI -2 (0) | 2021.06.03 |