Today I Learned

20210609 Swift function & Apple Documentation with Xylophone app -2

돌맹이시터 2021. 6. 10. 03:17

 

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