코딩공부할떄 이해가 안되는 코드 있으면 질문 어디다 해야하냐??
인디게임개발 갤러리에서 질문하기에는 주제가 좀 안 맞는거 같기도 하고
그리고 이거 이해가 안되
switch (weapon.id)
{
case 0:
float speed = 150 * Character.WeaponSpeed;
weapon.speed = speed + (speed * rate);
break;
default:
speed = 0.5f * Character.WeaponRate;
weapon.speed = speed * (1f - rate);
break;
}
speed 변수를 case 0 에서 선언했는데 왜 default에서 쓸수 있냐?
case 0이 돌지 안으면 변수 선언도 안되는거 아냐?
외부에도 스피드 변수설정해놓은거 없음? - dc App
없어 case 0 에서 float 지우면 default 까지 다 빨간줄 뜬다
이거 돌아가냐?
원래 swich문 break 없이도 쓸수있으니 ide에서 오류 안뱉는거 아닐까. 실제로 돌리면 오류날듯.
이거 근데 switch 안에서는 변수 정의 공유하는걸로 앎. 다른 case에 같은 이름 변수 정의하면 오류뜸. 위의 코드가 실제로 돌아가는지는 모르겠네
맞아 같은 변수이름 default에도 적으면 오류남 변수 공유가 맞는듯
변수의 lifecycle은 코드블록"{}"에서 유효한데 switch case가 딱 그모양이라서 그런건가 유추중임... - dc App
case안에 블록 하나 더 만들면 그런 현상이 사라짐 - dc App
어 뭐야 신기하넹..
왜 이런지 알려면 어셈블리를 이해해야하는데 쉽게 말해서 스위치의 각 케이스들은 새로운 스코프를 만들지 않음
코드블럭 기준으로 한뭉탱이로 묶어서 그런듯? - dc App
저게 되네...
Hoisting 된 것 같음. 함수 실행할때 변수 공간 미리 할당하는데, 이거 함수 스코프가 같아서 그런것 같음 보통은 함수 안에 내부 변수를 사용하면 함수 내용 맨 위에다가 변수 선언이랑 초기화 하는게 일반적임 Dynamic language 에서 저런 경우 많아
요런 언어 관련 질문에는 어떤 언어로 작성했는지도 가 이 적으면 도움받기 더 좋을거야
떙큐
신기하네 씨쁠쁠에선 케이스문 내부에서 변수선언 자체가 안되는데