React는 강력한 합성 모델을 가지고 있고, 상속 대신 합성을 사용하여 컴포넌트 간 코드를 재사용할 수 있다. 컴포넌트에서 다른 컴포넌트를 담을 수 있다. 어떤 컴포넌트들은 어떤 자식 element가 들어올 지 미리 예상할 수 없는 경우가 있다. 이러한 경우 child prop을 사용하여 자식 element를 출력에 그대로 전달하는 것이 좋다. interface Props{ children : React.ReactNode; } function Wrapper({children} : Props) { return ( {children} ); } 이러한 방식으로 다른 컴포넌트에 JSX를 중첩하여 임의의 자식을 전달할 수 있다. function Components1() { return ( 내용1 내용2 ); }..
match match라는 제어문이 있다. 일련의 패턴에 대해 어떤 값을 비교한 뒤 어떤 패턴에 매치되었는지에 따라 코드를 제어한다. match 표현식을 코인 분류기라고 생각했을 때 match를 이용하여 코인에 따른 번호를 return하는 코드이다. pub fn run(){ let coin = Coin::BitCoin; println!("{}",value_in_coin(coin)); } enum Coin{ BitCoin, Ethereum, AltCoin, Ripple } fn value_in_coin(coin: Coin) -> u32{ match coin{ Coin::BitCoin => 1, Coin::Ethereum => 2, Coin::AltCoin => 3, Coin::Ripple => 4 } } m..
열거형 enum 키워드를 이용하여 작성한다. 구조체보다 유용하고 적절하게 사용될 상황이 있다. 예를들면 IP주소의 버전을 다룰때를 생각해봤을때, ipv4, ipv6가 있다. 모든 가능한 값들을 나열할 수 있으며 이를 열거라고 한다. IP주소는 v4, v6 중 하나이며 동시에 두 버전이 될 수 없다. 이 경우 열거형이 적절하다. 열거형의 값은 variants 중 하나만 사용할 수 있다. IP주소라는 같은 카테고리 내 다른버전일 경우에 대한 예시이다. enum IpAddrKind{ V4, // variants V6 } IpAddrKind라는 열거형 타입이고, 각각 ipv4, ipv6를 나타낸다. 열거형 값 enum IpAddrKind{ V4, // variants V6 } pub fn run(){ let i..
leetcode.com/problems/design-hashmap/submissions/ Design HashMap - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Hash table관련 라이브러리 없이 작동하는 객체를 만들라고한다. class MyHashMap { private: public: vector map; MyHashMap() {} ~MyHashMap() { map.clear(); } void put(int key, int value) { if (g..
leetcode.com/problems/design-hashset/ Design HashSet - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Hash table관련 라이브러리 사용없이 Hash Set 형태의 클래스를 만들라고 한다. class MyHashSet { public: list set; MyHashSet() {} void add(int key) { set.push_back(key); } void remove(int key) { set.remove(k..
동일한 데이터에 대한 변경사항을 여러 components에 반영할 일이 있다. 이럴 경우 가까운 트리로 state를 끌어올릴 수 있다. 2개의 자식 컴포넌트가 있고 각 컴포넌트는 독립적인 상태를 가지고 있다. 여기서 두 컴포넌트의 상태를 동기화 하고싶다. 여기서 state를 공유하는 일은 그 값을 필요로하는 컴포넌트간 가장 가까운 공통 조상으로 state를 끌어올리기하여 진행할 수 있다. State끌어올리기 현재 두 컴포넌트가 각각의 입력값을 각자의 state에 독립적으로 저장하고 있다. 자식 컴포넌트의 각각의 state는 제거하고 그 상태를 부모 컴포넌트에 옮겨 놓는다. 이제 각각의 상태는 하나의 컴포넌트(부모 컴포넌트)에 저장이 된다. 이를 SOT(source of truth, 진리의 원천이래;;;;..
method - 함수와 유사하게 fn키워드로 선언되고, parameter, return값이 있으며, 호출이 가능하다. - 함수와 다른점은 구조체의 내용안에 정의되며(열거형, trait객체안에도 정의 가능), 첫번째 parameter는 항상 self이다 - selft는 해당 method가 호출되고 있는 구조체의 인스턴스이다. struct Rectangle{ length : u32, width : u32 } pub fn run(){ let rect1 = Rectangle{ length: 50, width : 30 }; println!("{}", rect1.area()); } impl Rectangle{ fn area(&self) -> u32{ self.length * self.width } } Rectang..