작성
·
149
·
수정됨
0
함수 질문 드립니다.
보통 함수는 파라미터를 전달해서 그 파라미터값으로 중괄호 부분의 함수를 실행시키는걸로 알고있는데요.
작업을 하다보면, 위와 같이 반환하는 함수의 타입과 이름이 정해져서 나오는경우가 있더라구요.
위에 이미지 안에 함수보면 빌드와 에이싱크타입의 context, snapshot을 받아서 함수를 실행하는걸로 나와있는거 같습니다.
제가 해당 값에 아무것도 전달하지도 않았는데 어떻게 중괄호 안에서 snapshot. 즉, . 을 이용해서 접근해서 이용할수있는건가요?
함수에 파라미터를 받아서 중괄호 부분을 실행시키는거랑 많이 달라서요..
질문1
snapshot에는 어떤한 데이터도 제가 제공안했는데 어떻게 접근 가능한지?
질문2
파라미터에 ( int a , String b ) 이렇게 선언하는것과
(BuildContext context , AsyncSnapshot<T> snapshot)
파라미터 앞에 타입 선언하고 변수 선언하고 똑같은데, 위에꺼는 파라미터를 전달해서 실행하는것과 파라미터 안에 데이터에 접근해서 사용하는것과 어떻게 구분하는건가요?
답변 1
0
안녕하세요!
개념이 좀 헷갈리시는 것 같습니다.
해당 함수는 수강생님께서 직접 선언하신 함수가 아닙니다.
해당 함수의 시그니처 (반환타입, 파라미터등)은 builder 파라미터에 정해져있습니다.
즉, 그냥 내 맘대로 선언 가능한게 아닙니다.
builder 파라미터에 정의된 그대로 파라미터와 반환타입을 입력해줘야만 사용이 가능합니다.
다만 여기서 파라미터의 이름은 마음대로 바꾸셔도 됩니다.
snapshot의 데이터에 접근 가능한 이유는 어딘가에서 입력해주고 있기 때문입니다.
말씀하신대로 builder에 제공한 함수는 "저희가 직접 실행"한적이 없지만 조건에 맞으면 실행이 되고 있습니다.
즉, FutureBuilder 내부에서 builder 파라미터에 제공한 함수를 실행하는 코드가 어딘가에 있겠죠?
실행할때는 snapshot 값을 파라미터에 입력하고 실행할것입니다.
그때 값을 제공받습니다.
질문2는 이해 못하겠습니다. 제가 보이기엔 파라미터의 정의 빼고는 다를게 없어보이는데 어떤 부분을 구분하고싶은지 조금 더 정확히 말씀해주시면 답변 드리겠습니다.
감사합니다!
파라미터에 접근을 못한다는게 무슨말씀이신지 도저히 모르겠습니다.
name.toString() 이런게 안된다는 말씀이신가요?
첫 함수에서 name <- 이게 파라미터입니다. 작성하신 문법은 문제가 없어보이며 name 접근 가능하셔야 정상입니다.
예를들어 아래와 같은 함수가 있을경우에요. name. 이렇게해서 파라미터에 접근을 못하는데..
meber(String name){
name.
}
아래와 같이 builder의 경우는 어떻게 파라미터 값에 접근이 가능한지가 궁금해요.
builder: (context, snapshot){
snapshot.
}
만약, 맨위에 member함수도 아래 빌더 함수처럼 값에 접근이 가능하려면 어떻게 만드는걸까요?