-
24년 4월 26일 TIL공부 기록 2024. 4. 26. 21:41
벌써 26일이라니 .. 흐덜
오늘 깨달은 지식
enum : 숫자에 의미를 부여 하는 것이다. 튜터님이 저번에 알려준 적이 있는데 역시 한 번 경험을 얻어야 알게 되는 것 같다. 이미 enum 으로 돼 있는 것도 있다. 컬러값이 그 경우다. RED,GREEN 등이 숫자가 담겨 있는 것이다. 담겨 있다고 하는 게 맞나? 아무튼 이 enum을 사용 하게 되면 0, 1 이런 값이 아닌 문자 RED 이런 식으로 표현 할 수 있어서 가독성에 매우 좋은 기능이다.
사용법 public enum 이름 { 숫자에 의미를 부여할 단어명, 2, 3,4 }
, 기준으로 0~ 부터 숫자가 오르게 된다. enum 첫 번째에 weapon 적었으면 weapon은 0 이 되게 되는 것이다.
==============
LINQ : 린큐
int totalAtk = 0;
for(int i = 0; i<inventory.Count; i++)
{
totalAtk += inventory[i].Atk;
}
이러한 코드를 매우 간략하게 표현 할 수 있는 게 린큐다.
inventory.Select(item ⇒ item,Atk).Sum();
이와 같이 인벤토리에서 셀렉을 해오는데 아이템 리스트에서 Atk를 가져와 Sum 을 하게 하는 것이다.
주의 할 점은 메모리사용량이 커 남용을 하면 안 된다고 한다. 튜터님이 남용 하는 거 극혐 한다고 한다. 히이익
==============
삼항연산자에 대해서
삼항연산자는 경우에 따라서 매우 유용하게 쓸 수 있다. 가독성을 올리는 데 좋다는 것이다.
오늘과 같은 경우에 장착 여부에 따라 추가 공격력 표시를 보이게 하는 거였다.
삼항연산자를 통해 장비가 장착이 돼있다면 한 변수에 공격력을 합산 하게 하고 아니면 0값을 주게 했다.
ex) nt bounusAtk = inventory.Select(item⇒item.IsEquipped ? itemAtk : 0 ).Sum();
내가 혼자 작성 한다라면 몇 줄을 사용 해서 작성 할 것 같은데 이렇게 한 줄로써 매우 간단하고 가독성 좋게 작성 할 수 있다.
==============
Thread.Sleep(1111) : 몇 미리 스레드 동안 멈추게 할 수 있다.
==============
코드를 치다가 그 코드 줄 위치를 바꿀 수 있다. : 알트 + 방향키
==============
ToString - ( " 00 " ) 이렇게 작성을 하면 숫자가 1글자여도 2글자로 출력을 하게 할 수 있다.
나는 이걸 몰라서 문자열로 01... 이렇게 만들고 등등등 .... 하여간 몸이 고생한다.
=============
파라미터 사용법에 대해서
파라미터를 사용함에 있어서 더 간편 하게 코드를 작성 할 수 있는 방법이 있다. 파라미터에 미리 값을 주면 그 함수를 실행 할 때 생략을 할 수 있다.
ex ) void Sum(int a, int b = 10) {} -> Sum(10)
이렇게 하면 파라미터를 채워줄 때 하나만 채워줘도 b는 자동으로 10으로 채워지게 된다. 생략을 할 수 있다는 거다.
잘 기억 하고 있자. 매우 유용하고 날 편하게 만들어 주는 생략법인 것 같다. 이번에 깨달았다.
주의 할 점은 앞 뒤 모든 것을 생략 할 수 없다. 앞이나 뒤 중 하나만 생략 하는 것이 좋다고 한다.
만약 앞과 뒤 둘 다 생략 하면 찾기가 어렵다고 한다. 뭐가 두 번째고 뭐가 첫 번째인지, 사실 감만 오고 잘 모르겠는데 공학적인 지식 인 것 같다. 오늘은 여기서 런친다.
=============
생성자에 대해서
생성자란 클래스가 생성 될 때 호출 되는 함수, 바로 실행 되는 거다.
사용 법은 함수를 클래스명과 같이 하면 된다.
유니티에서는 보통 사용 하지 않는데, 이번 과제에서 게임이 실행 됐을 때, 아이템이나 플레이어가 생성 됐을 때 적절한 함수가 실행 되게끔 하기 위해 사용 됐다.
ex) 게임이 실행 되면 무슨 함수를 불러오고 어떠한 객체를 생성한다. (게임매니저에서)
아이템을 생성 할 때 파라미터에 정보들을 입력 하고 생성 하면 생성자를 통해 아이템의 값들이 초기화 된다.
플레이어도 마찬가지
헷갈려서 열심히 개념을 잡았는데 유니티에서는 못 쓰게 한단다.
생성자의 용도는 기본세팅! 아무튼 생성자를 통해 게임이 시작 되자마자 인벤토리나 플레이어를 생성 해주니 다음부터 코드를 매우 깔금하게 보이게 할 수 있었다. player.level 이나 inventory.item 등 누가 봐도 플레이어의 레벨 가방의 아이템 보이게 작성 할 수 있었다. 매우 가독성이 좋아 보였다. 가독성 좋게 만들라는 게 뭔지 튜터님 코드를 보면서 확 깨달았다..
튜터님의 코드작성 훔쳐보고 깨달은 것
튜터님은 코드를 작성 할 때 메서드를 만들고 나서 메서드를 실행 하게 하는 게 아니라 메서드나 클래스형 이름을 사용 하고 후에 컨트롤 + . 을 통해 클래스나 메서드를 만들었다. 왜 그런가 하니 아주 간편한 사기적이라고 해야하나 아무튼 기능이 있었다. 그 것은 각 유형에 맞춰서 자동으로 위치까지 형태를 만들어 줬다.
클래스 위치에 이름을 선언 하면 자동으로 클래스 생성. 메서드 형식이면 자동으로 알맞은 위치에 메서드 형식 생성해준다.
이런 개사기 스킬이 있었다니. 앞으로 변수명 떠올리기에 더 신중을 가해야겠군.
=============
반복문과 if 조건문을 사용 할 때의 TIP
보통 반복문과 if를 같이 사용 하는데 이 때 경우에 따라서 else를 안 적고도 else 효과를 하게 할 수 있다. 어떻게 보면 당연한 건데 난 떠올리지 못 했었다. 예를 들어
while (true)
{
if (true?) {};
else(이거 해라);
}
이럴 경우에 어차피 if가 거짓이면 실행 되지 않고 다음 코드가 실행 될 것이니 굳이 else를 써서 코드를 낭비 하는 게 아니라 실행 할 내용만 적어주면 된다. 그렇게 코드를 또 간단하게 보이게 할 수 있었다. 물론 잘 생각 해서 생략을 해야 할 것이다. 이것을 보고 또 한 번의 깨달음을 얻게 된 기분 이었다. 이런 식으로도 코드를 줄일 수 있다라는 기분?.. 다음에 비슷한 경우가 있으면 내가 찾아서 줄일 수 있을 것 같다.
=============
함수에 조건이 여러 개 있을 경우 그 함수 하나로 조건을 여러개 사용 할 수 있다.
과제를 하면서 선택 하라는 기능을 정말 많이 구현 했었는데 그 때 트라이파스로 사용 했고 그 파스가 트루면 값을 가져오고 그 값에 맞게 알맞는 if 조건을 실행 하게 하는 코드 들이였는데 나는 한 15줄씩 사용 해서 구현 했던 걸 튜터님은 한 4줄인가 5줄로 하더라. 보기에도 정말 깔끔하고 덕분에 또 깨달음을 얻었다...
난 트라이파스, 그 값을 가져 오는 거 전부 따로따로 했는데 튜터님은 그걸 다 한 줄로 합쳤다. if 조건문에 형식이라고 해야하나 공식이라고 해야하나 아무튼 그걸 응용 한 것이다.
============
if 조건문에 값이 생기는 거나 더해지는 건 조건문 밖에 선언이 돼있을 경우에 그건 실제로 적용이 된다.
if ( a++ < b ) 이럴 경우에 a가 선언이 돼있다면 멤버변수? 필드변수였나? 아무튼 a에 값도 추가가 된다는 것이다.
이걸 활용 해서 한 줄로 작성을 했었다.
int.TryParse(Console.ReadLine()out, int b)) 이렇게 코드를 작성 해서 int b 라는 변수를 선언까지 해서 함수가 실행 될 때마다 파라미터에 값이 선언 되면서 작동이 되고 이 뒤에 && 연산자를 통해서 min,max까지 설정 해서 한 줄로 끝냈다.
그리고 reture을 줘서 int 값까지 반환 할 수 있게,
이렇게 하면 조건문에서 bool 형 조건에서도 사용 할 수 있고, int 관계 연산자에서도 한 가지 메서드로 사용 할 수 있게 되는 것이다. 잘 이해 해서 완전 잘 이용 하도록 하자. 이 개념을
==============
앞으론 이제 안 쓸 것 같지만 d꿀팁 .. cw + Tab 하면 콘솔.라인 바로 나온다. 다른 것도 되는데 단축키를 알아야겠지?
오늘 하루
클래스에 대한 깊은 깨달음을 얻을 수 있는 날이었다. ... 하 .. 내가 개념을 못 잡고 있던 게 클래스 안에서 클래스를 계속 만들고 있어서였군 .., 어쩑.., 그동안 머릿속에서 혼동 되던 게 정리가 되니까 다 쉬워졌다 그냥. 사실 쉬운 게 맞았던 거 아닐까...
오늘 튜터님의 해설강의가 정말 많은 도움이 됐던 것 같다. 설명도 잘 하시고 말도 빨라서 답답함 없이 쑥쑥. 아따 고사람 정말 똑부러진 튜터님이였다. 역시 내가 선택 한 전설의 튜터몬답군 나만 알고 싶었지만, 튜터님이 열심히 강의 찍으셨는데 많이 안 보는 것 같아 속상해 하는 것 같아서 잡담방에 보라고 채팅을 올렸다 ... 괜히 나대는 애로 찍힌 건 아닐까 싶네 . 근데 진짜 젛은 영상인 걸 어떡해
근데 보통 해설강의라고 하면 안 보지 않나? 나조차 처음엔 안 보려고 했는데, 이건 특강이라고 해야지.
그리고 공부는 9시 넘어가면 무조건 그만 하고 멈춰야겠다. 계속 9시 넘어서도 하니까 공부 할 때 대충 하는 것 같다.
좀 늦게 자면 되지 이런 식으로. 무조건 9시 되면 끝내고 자고 일찍 일어나서 하든가 아무튼 9시 넘어가면 다 정지. 그게 더 공부도 잘 되고 건강도 지키는 거다.
'공부 기록' 카테고리의 다른 글
24년 4월 28일 TIL (1) 2024.04.28 24년 4월 27일 (0) 2024.04.27 2024년 4월 25일 TIL (1) 2024.04.25 2024년 4월 24일 TIL (0) 2024.04.24 2024년 4월 23일 스파르타캠프 TIL (0) 2024.04.23