일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 애자일프로그래밍
- framework
- 클린코드
- 코딩
- 개발
- Java
- 프레임워크
- Spring
- API
- Elasticsearch
- 애자일
- 데이터베이스
- Baekjoon
- 그리디
- 코딩테스트
- 자바
- cleancode
- database
- 알고리즘
- 개발자
- 읽기쉬운코드
- spring boot
- 애자일기법
- 엘라스틱서치
- 백준
- ES
- 스프링
- 그리디알고리즘
- JPA
- 코드
- Today
- Total
목록전체 글 (172)
튼튼발자 개발 성장기🏋️
이번 장에서는 코드를 보다 간결하게 제어하기 위한 "if let"이라는 녀석을 알아본다. if let 구문은 하나의 패턴과 일치하는 값을 처리하고 나머지는 무시할 수 있도록 해준다. (간결한 이유 인가?라는 의문이 생긴다..) "어떠한 옵션 값을 매칭 시켜, 그 값이 특정 값일 경우에만 코드를 실행시키고 싶다!"라고 한다면 내 생각에는 두 가지의 방법이 있을 수 있다. 지금 부터 간결하고도 간편한 방법. if let을 소개한다. 다음 코드를 보자 fn main() { let var = 3; let some_u8_value = Some(var); // 첫 번째 방법 match some_u8_value { Some(3) => println!("three"), _ => (), } // 두 번째 방법 if le..
"match"라고 하는 흐름 제어 연산자가 있다.match 표현식은 열거형과 함께 사용되는 경우, 열거형 variants에 따라 다른 코드가 실행되며 해당 코드는 일치하는 값 내부의 데이터를 사용할 수 있다.(쉽게 이해하면 마치 패턴 매칭...?) fn main() { enum Coin { Penny, Nickel, Dime, Quarter, } fn value_in_cents(coin: Coin) -> u32 { // match 표현식 match coin { // arms // {표현식} => value Coin::Penny => 1, Coin::Nickel => 5, Coin::Dime => 10, Coin::Quarter => 25, } }} match 표현식의 예를 보면 coin이라는 match가..
enum(Enumeration)은 예전에 java를 공부할 때 처음 알게되었고 직접 개발할 때 사용해본 경험은 없다. 그 enum이 rust에도 있다는 것."열거형"이라고 부르는 enum은 말 그대로 "값을 열거해서 유형을 define한 것"이다. 다음 코드를 보자.fn main() { // Family enum 정의 enum Family { // variants #1 Mother, Father, Brother, Sister, // variants #2 Mother(String), Father(String), Brother(String), Sister(String), } // 접근 #1 let mother = Family::Mother; let father = Family::Father; // 접근 #2..
메소드(Method)는 함수와 유사하게도 "fn" 키워드와 메소드 명으로 선언하게 되며, 파라미터와 반환되는 값을 가진다.하지만! 메소드 라는 녀석은 구조체 컨텍스트(Context)에 정의되는데, 첫 번째 파라미터는 항상 "self"다. 이 새로운 녀석의 파라미터는 메소드가 호출되는 구조체의 인스턴스라고 생각하면 된다. 1. 메소드 정의 메소드를 정의해보자. // 구조체 정의struct Rectangle { length: u32, width: u32,} // 메소드 정의impl Rectangle { fn area(&self) -> u32 { self.length * self.width // 넓이 계산 : 가로 x 세로 }} fn main() { let rect = Rectangle { length: 50..
"Structure"라고 불리는 구조체는 여러가지의 관련된 값을 함께 이름을 지정(naming)하고 package화 할 수 있는 사용자의 커스텀 데이터 형식이다. 구조체는 포스팅(https://maeng-dev.tistory.com/9)에서 다룬 튜플과 비슷하게 서로 다른 타입으로 구성될 수 있다.하지만 각각의 구성 요소의 이름을 지정하여 값의 의미를 분명하고 명확아게 알 수 있다. 이 이점 덕분에 튜플보다 다루기 쉽다. struct Family { // 구조체 정의 // 필드 mother: String, father: String, son: String, number: u64,} 구조체를 정의할 때, struct 키워드를 사용하고 구조체의 naming을 하면 된다. (name의 첫 글자는 대문자로 하자..
소유권을 갖지 않는 테이터 타입은 또 있다. 바로 "Slice"슬라이스를 사용하게 된다면 Collection의 전체가 아닌 연속된 요소(Element) Sequence를 참조 할 수 있게 된다. String에서 첫 단어를 찾는 코드를 보자.fn main() { let string_slice = String::from("String Slice"); let idx = get_index(&string_slice); println!("idx : {}", idx);} fn get_index(str: &String) -> usize { // 소유권 X let str_bytes = str.as_bytes(); // 들어온 str의 바이트를 겟! // enumerate : iterator의 결과 값을 직접 반환 (튜플..
다음 코드를 컴파일해보자.fn main() { let str = String::from("string"); let length = get_length(&str); println!("================= get_length() finish! ================="); println!("str의 값 : [{}]", str); println!("str의 길이 : [{}]", length);} fn get_length(func_str: &String) -> usize { println!("================= get_length() start! ================="); println!("func_str의 값 : [{}]", func_str); func_str.len(..
Rust Docs에 보면 다음과 같이 설명이 되어있다. With the String type, in order to support a mutable, growable piece of text, we need to allocate an amount of memory on the heap, unknown at compile time, to hold the contents. This means:The memory must be requested from the operating system at runtime.We need a way of returning this memory to the operating system when we’re done with our String. 직역하면.... String t..