DAY5_retrospective
ref 의 의미
변수 이해하기
cs로 swapValue 함수를 만들어보자
public swapValue(int a, int b){
//a와 b의 값을 바꿔주는 함수를 만들어보자
}
swift라면 아래와 같이 표현될거임
func swapValue(int: a, int: b)->Int{
}
보이드 스타트에 만들 함수를 불러보자
c#에서 ; 까먹지 말고!
void start() {
int a = 2;
int b = 5;
swapValue(a,b);
//유니티에서 보이게 해주기 위해
Debug.log($"a:{a}, b:{b}") //$가 swift의 \() 같은 역할, 스트링내에서 변수읽기
보이드 스타트에서 변수를 초기화 해놓은 상태, 즉 외부매개변수
그러면 이제 어떻게 a에 b값이 들어가고 b에 a값이 들어가게 할까?
public swapValue(int a, int b) {
a = b
}
이렇게 표현한다면 a에 b값이 들어가 있는 상태 그런데 여기서 만약
public swapValue(int a, int b) {
a = b
b = a
}
이렇게 표현한다면? 우로보로스만들기임ㅋ 그럼 대체 어떻게 b에 a값을 넣을 수 있지?
이 때 바로 임시 변수를 설정해두면 해결됨
public swapValue(int a, int b) {
int temp = a
a = b
b = temp
}
이렇게 해놓으면 위에서 아래로 순서를 읽는 코드특성상 temp에 순수한 a값이 저장되어있고
a에 b값이 넣어져서 a는 5인 상태여도 temp는 여전히 a값인 2를 가지고 있어서 서로 교차가 가능해짐
근데 이 상태로 유니티 뽑으면 여전히 a = 2, b = 5임 왜 그럴까?
값이 복사되서임
void start(){
int a = 2;
int b = 5;
swapValue(a, b);
Debug.log($"a: {a}, b: {b}");
}
public swapValue(int a, int b) {
int temp = a
a = b
b = temp
}
이상태에서
void start(){
int a = 2;
int b = 5;
//변수는 여기 선언되어 있고
swapValue(ref a, ref b);
//함수에게 변수를 전달할 때 값을 복사해서 전달하는 게 아니라
//해당 값의 참조값을 전달해서 원래 변수를 바꿔버리는 거
Debug.log($"a: {a}, b: {b}");
}
public swapValue(ref int a, ref int b) {
int temp = a
a = b
b = temp
}
이렇게 바꿔줘야해.
가변변수 이해하기
string Alltext (params string[] strings)
{
string ref string = "";
for (i = 0; i < string.length; i++)
{
refString += string.length[i];
}
return refString
(params string[] strings) 라는 뜻은
params 나는 이제 매개변수를 만들거야
string[] 여러개 문자열을 담을 수 있는 배열을 선언하고 싶어
strings 그리고 이거를 strings라고 부를거야
라고 볼 수 있겠다.
이름을 받으면 성과 이름을 나눠서 출력해보기
void GetFirstAndLastname(string full, string first, string last){
int total_length = full.Length;
first = full.Substring(0, total_length -2);
last = full.Substirng(total_length - 2);
}
void start(){
string firstname = "";
string lastname = "";
GetFirstAndLastname("조희진", firstname, lastname);
이렇게만 하면 출력이 안 됨 ref를 해줘야 함
void GetFirstAndLastname(string full, ref string first, ref string last){
int total_length = full.Length;
first = full.Substring(0, total_length -2);
last = full.Substirng(total_length - 2);
}
void start(){
string firstname = "";
string lastname = "";
GetFirstAndLastname("조희진", ref firstname, ref lastname);
Debug.log ($"성 : {lastname), 이름:{firstname})
ref를 쓰지 않으면 아무리 함수 안에서 값을 바꿔도 함수를 불러올 때 값이 변경되어 오지 않는다.
out
out은 ref랑 매우 흡사한데
void GetFirstAndLastname(string full, out string first, out string last){
int total_length = full.Length;
first = full.Substring(0, total_length -2);
last = full.Substring(total_length -2);
}
void start(){
GetFirstAndLastname("조희진", out string firstname, out string last name);
Debug.log($"성: {firstname], 이름: {lastname}")
이렇게
class
띵언 고준일강사님 설명개찰짐
리모콘을 예시로 들어서 설명해주셨는데
사실 리모콘 안에 수많은 기능 중 우리가 누르는 버튼은 몇 개 안 된다
기능은 가지고 있지만 외부로 노출이 안 되어야 하는 경우
프라이빗으로(기본값)으로 properties 나 methods를 만드는 거고
이 중에서 마치 리모컨 버튼 처럼 몇 몇 개만 public으로 해주는거
이 때 프라이빗으로 할당하면 어떻게 초기값을 만들까? 가 문제가 되는데
이 때 '생성자' 를 만듦으로 해결
생성자 메서드는 뭔데?
해당 클래스가 인스턴스로 생성될 때 해야할 일을 처리해주는 메서드
그래서 생성자는 해당 인스턴스가 생성될 때 호출되는 메서드끼 때문에 외부에 노출될 수 있게 퍼블릭으로 해주고 클래스명과 똑같이 해줘야해
얘가 하는 일은 properties를 초기화 해주는 역할을 한다.
-->> 사실 이 내용은 이미 익히 알고 있던 내용인데...이걸 이렇게 리모콘 비유로 들으니까 완전 뇌리에 팍
class Book (){
var writer = "Heejin";
var pages = 456;
Author And Source
이 문제에 관하여(DAY5_retrospective), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@midmost/DAY5retrospective-sxbg3snt저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)