Keep Going

Keep Going

[C++] std::span : 연속된 메모리를 복사 없이 넘기기

안녕하세요. 이번 글에서는 C++20에서 추가된 std::span에 대해 알아보겠습니다. 배열이나 vector를 함수에 넘길 때 보통 포인터와 길이를 따로 전달하거나, vector를 const 참조로 받는 방식을 씁니다. 전자는 길이를 잘못 넘기기 쉽고, 후자는 …

[C#] 확장 메서드 : 기존 타입에 메서드 더하기

안녕하세요. 이번 글에서는 C#의 확장 메서드(Extension Method)에 대해 알아보겠습니다. string이나 List처럼 직접 수정할 수 없는 타입에 기능을 더하고 싶을 때, 상속을 하거나 별도의 도우미 클래스를 만들 수도 있습니다. 확장 메서드를 …

[영어] say, tell, speak, talk : “말하다”의 구분

안녕하세요. 이번 글에서는 say, tell, speak, talk의 차이에 대해 알아보겠습니다. 네 단어 모두 우리말로는 “말하다”로 옮겨지지만, 영어에서는 뒤에 어떤 말이 오는지가 서로 다릅니다. 뜻을 외우기보다 어떤 형태로 쓰이는지를 구분해 두면 …

[영어] 구동사 : 동사와 불변화사가 만드는 새로운 뜻

안녕하세요. 이번 글에서는 영어에서 자주 쓰이는 구동사(phrasal verbs)에 대해 알아보겠습니다. 구동사는 동사에 전치사나 부사가 붙어 하나의 새로운 뜻을 만드는 표현입니다. 원래 동사의 뜻만으로는 짐작하기 어려운 경우가 많고, 일상 대화에서는 한 …

[C++] std::string_view : 복사 없이 문자열 읽기

안녕하세요. 이번 글에서는 C++17에서 추가된 std::string_view에 대해 알아보겠습니다. 문자열을 함수 인자로 넘길 때 const std::string&를 쓰면 문자열 리터럴이 들어올 때마다 임시 std::string이 만들어지고, const char*를 쓰면 길이를 매번 다시 계산해야 …

[영어] 빈도부사 : always, usually, often의 위치

안녕하세요. 이번 글에서는 빈도부사의 의미와 문장 안에서의 위치에 대해 알아보겠습니다. 한국어는 “나는 보통 일찍 일어납니다”처럼 부사를 비교적 자유롭게 놓을 수 있지만, 영어의 빈도부사는 놓이는 자리가 어느 정도 정해져 있습니다. 뜻은 …

[C#] switch 식과 패턴 매칭 : 조건 분기를 간결하게

안녕하세요. 이번 글에서는 C#의 switch 식(switch expression)과 패턴 매칭(pattern matching)에 대해 알아보겠습니다. 기존 switch 문은 case마다 break를 쓰고 결과를 변수에 대입해야 해서 값을 고르는 용도로는 코드가 길어졌습니다. C# 8.0부터 값을 …