ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ด์ฌ์ด ๋ง์ ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ๋๋ค. ์นด์นด์ค(Daum) ๊ฐ๋ฐํ์ฅ, NHN ์์, LINE+ ๋ฆฌ๋๋ฅผ ์ง๋ด๋ฉฐ ๊ฐ๋ฐํ ๋ฆฌ๋ฉ์ ํ๊ณ , ํ์ฌ๋ ๋๋ ธํฐ์์๋ผ๋ AI์คํํธ์ ์์ ๊ฐ๋ฐํ์ฅ์ผ๋ก ์ผํ๊ณ ์์ต๋๋ค.
https://hatemogi.com/ ์ ๊ฐ๋ฐ์ ๊ฐ์ธ ํ์ ์ด์์ค์ ๋๋ค.
Courses
Reviews
- Introduction to and use of Rust, an elegant, high-performance programming language
- Java 11 LTS Update - Summary of New Features in JAVA 9, 10, 11
- Git Version Control Basics Practice: Learning Basic Commands in 30 Minutes
- Introduction to and use of Rust, an elegant, high-performance programming language
Posts
Q&A
์์ ๊ถ ์ด์ ๊ณผ ๊ด๋ จ๋ ์ง๋ฌธ์ ๋๋ค
์๋ ํ์ธ์. AI์ธํด์ด ๋๋ฌด ํ๋ฅญํ๊ฒ ๋ต์ ํด์ฃผ์ด์, ์ ๊ฐ ๋ ๋๋ฆด ๋ง์์ด ์๋ค์. ํน์ ๋ถ์ฐ์ด ํ์ํ์ ๋ถ๋ถ์ด ์์ผ์๊ฑฐ๋ ์ถ๊ฐ์ง๋ฌธ ํธํ๊ฒ ์ฃผ์ธ์.Rust๋ ์ปดํ์ผ ํ์์ ๊น๊นํ๊ฒ ๋ ๊ฒ์ฌํด์ฃผ๋, ๋ ๋ฏฟ๊ณ ํธํ๊ฒ ์ธ ์ ์๋ค ์ ๋๋ก ๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
- 0
- 2
- 99
Q&A
&r1 ์ ์จ์ผํ๋์ง r1์ ์จ์ผํ๋์ง?
fn main() { let s = String::from("ํฌ๋ก"); let r1: &String = &s; let r2: &&String = &r1; let r3: &&&String = &&&s; println!("r1 = {}, r2= {}, r3 = {}", r1, r2, r3); }์๊ฐ ๋ฐ ์ข์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.์ฐ์ , println!("{}", v)์์ ์ด๋ค ๊ฐ์ด ์ถ๋ ฅ๋๋ค๊ณ ํด์, ๊ทธ ๊ฐ์ด ๊ทธ๋๋ก ๋ณด์ธ ๊ฒ ์๋๋ผ๋ ์ ์ ๋ช ํํ ํ๋ฉด ์ข๊ฒ ์ต๋๋ค.์ง๋ฌธ์ ์ ์ด์ฃผ์ ๋๋ก, r1์ s์ ์ฃผ์๊ฐ, ๋ฌ์คํธ ์ฉ์ด๋ก ๋งํ์๋ฉด ์ฐธ์กฐ๊ฐ์ธ ๊ฒ ๋ง์ต๋๋ค. ๋์ ํ์ ์ด ๋ช ๋ฐฑํ ๋ค๋ฅด์ฃ . s์ ํ์ ์ String์ด๊ณ , r1์ ํ์ ์ &String์ ๋๋ค.๋จ์ง, println!๋งคํฌ๋ก์ ํ์ฉ๋๋ std::fmt::Display ํธ๋ ์ดํธ ๊ตฌํ๊ณผ ๋ฌ์คํธ์ deref ๊ท์น ๋๋ฌธ์ ํ๋ฉด์๋ "ํฌ๋ก"๋ผ๋ ๋ฌธ์์ด์ด ์ ๋ณด์ธ ๊ฒ ๋ฟ์ ๋๋ค.๊ฐ์์ ๋ฐ๋ก ๋ค๋ฃฌ ๋ด์ฉ์ด ์๋๋ฏ๋ก ์์ธํ ์ค๋ช ๋๋ฆฌ๊ธฐ๋ ์ด๋ ต์ต๋๋ค๋ง, ๊ฐ๋จํ๊ฒ ์ ์๋ฉด, println!์ {}์๋ฆฌ์ ์ฐ์ ๋์๋ค์ Display::fmt ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋์ด์๊ณ , ์ฐธ์กฐ๊ฐ์ธ ๊ฒฝ์ฐ ์ํ(์ฐธ์กฐ๋ฅผ ํด์ ํด์)์ fmt๊น์ง ์ซ์๊ฐ์ ์ถ๋ ฅํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.๋ฐ๋ผ์ ๋ช ์ค์ผ๋ก ์ฐธ์กฐํ ์ฐธ์กฐ๊ฐ์ด๋ ์๋ ํ์ ์ ๊ฐ์ด Displayํ ์ ์๋ ๊ฐ์ด๋ผ๋ฉด ๊ฐ์ ๋ด์ฉ์ด ํ๋ฉด์ ๋ณด์ด๋ ๊ฒ์ ๋๋ค.์ง๋ฌธ์ ์ ์ด์ฃผ์ , r1์ ์จ์ผํ๋๋, &r1์ ์จ์ผ ํ๋๋๋ ์ง๋ฌธ์๋, ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฏธ r1์ด ์ฐธ์กฐ๊ฐ์ด๋ฏ๋ก, ๊ทธ๊ฑธ ๋ ์ฐธ์กฐํ ์ผ์ ํ์น๋ ์๊ฒ ๋ค๊ณ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. (ํ์ง๋ง C/C++๊ฐ์ ์ธ์ด์์ ๋๋ก ์ด์คํฌ์ธํฐ๋ฅผ ์ฐ๊ธฐ๋ ํ๋, ๋น์ทํ ์ฉ๋ก๋ก ์ฐ์ผ ์๋ ์๊ฒ ์ฃ )๋ ๊ถ๊ธํ์ ๋ด์ฉ์ด ์์ผ์๋ฉด ํธํ ๋ง์์ฃผ์ธ์
- 1
- 1
- 72
Q&A
์๋๊ฐ ์๋ช ์ ๋ํ ์ง๋ฌธ
์ด๋ฒ์๋ ์ข์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.์ ๊ฐ ๊ฐ์์์ ๋งํ ๋ด์ฉ๊ณผ ๋งํฌ์ฃผ์ ๋ฌธ์์ ๋ด์ฉ์ด ์ฌ์ค ๊ฐ์ ๋ด์ฉ์ ๋๋ค.์ ๋ ์ฒ์์ ํท๊ฐ๋ฆฐ ๋ถ๋ถ์ธ๋ฐ์, ์๋๊ฐ์ ์๋ช ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ ๋ก ์๋๊ฐ์ ์๋ช ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ๋ด๊ฐ ์๋ํ ๊ฒ์ ๋ ๊ธธ๊ฒ ์ฐ๊ณ ์ถ๋ค๊ณ ํด์ ์๋๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ ๋จ์ ์๊ฑฐ๋ ํ๋ ๊ฒ ์๋ ๊ฑฐ์ฃ . ๋จ์ง ์๋ ๊ฐ๋ค์ ์์ ์๊ฐ ์ ์ธ๋ ์ค์ฝํ์์ ๋ฒ์ด๋๋ฉด ๊ทธ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง ๋ฟ์ ๋๋ค. ์๋๊ฐ๋ค์ ๊ทธ ์๋๊ฐ์ด ์ ์ง๋ ๋ฒ์ ์์์๋ง ํ์ฉํ ์ ์๊ธฐ์, ์๋๊ฒ์ฌ๊ธฐ๊ฐ ๊ทธ ์๋๊ฐ๋ค์ด ํด๋น ์๋ช ๋ฒ์ ์์์ ์ฐ์ด๊ณ ์๋์ง๋ฅผ ์ปดํ์ผ ์๊ฐ์ ๊ฒ์ฌํด์ฃผ๋ ๊ฒ์ ๋๋ค.์ฑํ์ด๋ผ๋ ํํ์ผ๋ก ๋ณด์, ์๋ง๋ ์ด๋ค ์๋ช ์ผ๋ก ํ๋ณด๋๋ ๊ฒ์ผ๋ก ์ดํดํ์ ๊ฒ ์๋๊ฐ ์ถ์ธก๋๋๋ฐ์, ์ฑํ์ด ์๋๋ผ, ๊ทธ ์๋ช ์ด ํ๋ณด๋๋ ์กฐ๊ฑด์ด์ด์ผ๋ง ์ปดํ์ผ์ด ๋๋ค๋ผ๊ณ ์ดํดํ๋ฉด ์ด๋จ๊น ์ถ์ต๋๋ค. s1๊ณผ s2๋ ์๋๊ฐ์ ์ฐธ์กฐ๊ฐ์ธ๋ฐ, ์๋ ๊ฐ๋ค์ ์๋ช ์ด ์์ ๊ฒ์ด๊ณ , ๊ทธ ์๋ช ๋ณด๋ค ๋ฐํ๊ฐ์ ์๋ช ์ด ๊ฐ๊ฑฐ๋ ์งง์์ผ ๋ฌธ์ ๊ฐ ์๊ฒ ์ฃ . ์ ๊ฐ ๋ฐ์ธํ ๋ด์ฉ์ ์๋๊ฐ๋ค์ ์๋ช ์ด ๋ ๊ธธ์ด์ผ ํ๋ค๊ณ ์๊ธฐํ ๊ฒ์ด๋ผ์, ์ด๋ ์ธก๋ฉด์์ ๋ณด๋๋์ ๋ฐ๋ผ ๋ญ๊ฐ ๊ธด์ง ์งง์์ง๊ฐ ๋ค๋ฅธ ๊ฒ๋ฟ, ์ฌ์ค ๊ฐ์ ๋ด์ฉ์ ๋๋ค. a >= b ์ด์ด์ผ ํ๋๋ฐ, a์ ์ฅ์์๋ ๊ฐ๊ฑฐ๋ ์ปค์ผํ๋ค๋ ์๋ฏธ๊ฐ ๋๋ ๊ฒ์ด๊ณ , b์ ์ฅ์์๋ ๊ฐ๊ฑฐ๋ ์์์ผ ํ๋ค๋ ๋ป์ธ ๊ฑฐ์ฃ . ํต์ฌ์, ์ฐธ์กฐ๊ฐ์ ์๋ช ์ ์๋๊ฐ์ ์๋ช ๋ณด๋ค ๊ฐ๊ฑฐ๋ ์งง์์ผ๋ง ํ๋ค.๊ทธ๊ฑธ ๋ฌธ์ ์๋์ง ํ์ธํด์ฃผ๋ ๊ฒ์ด ์๋๊ฒ์ฌ๊ธฐ๋ค๋ผ๊ณ ์ดํดํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค์ ์ ๋ฆฌํ๋ฉด, longestํจ์์์ ์ฐ์ธ ์ฐธ์กฐ๊ฐ s1, s2, ๋ฐํ๊ฐ(์ด ๊ฒฝ์ฐ ๋ฐํ๊ฐ๋ ์ฐธ์กฐ๊ฐ) 3๊ฐ ์ฐธ์กฐ๊ฐ์ ์๋ช ์ ๋๊ณ ๋ณผ ๋, ๋ฐํ๊ฐ์ ์๋ช ์ s1์ด๋ s2์ ์๋ช ๊ณผ ์ฐ๊ฒฐ๋๋๋ฐ, ๋ญ์ผ์ง๋ ์ค์ ๋ฐํ์์์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๋๊น ๋ ์ค ์งง์ ์๋ช ์ ๊ธฐ์ค์ผ๋ก ๋ฐํ๊ฐ์ ์๋ช ์ด ๋ง์กฑ๋์ด์ผ ํ๋ ์ํฉ์ ๋๋ค. ์ด๊ฒ ๋งํฌ์ฃผ์ ๋ฌธ์์ ์๋ ๋ด์ฉ์ด๊ณ , ์ ๊ฐ ๊ฐ์์์ ๋งํ ๋ด์ฉ์, ๋ฐํ๊ฐ์ ์๋ช ๋ณด๋ค s1, s2์ ์๋ช ์ด ๊ฐ๊ฑฐ๋ ๊ธธ์ด์ผํ๋ค๋ ๋ด์ฉ์ด๋ฏ๋ก, ์ด๋ ๊ฐ์ ๋ป์ด์์ s1์ ์๋ช ๊ณผ s2์ ์๋ช ์ค ์งง์ ๊ฒ์ ์๋ช ์ด ๋ฐํ๊ฐ์ ์๋ช ์ด ๋๋ค==๋ฐํ๊ฐ์ ์๋ช ๋ณด๋ค, s1์ ์๋ช ๊ณผ s2์ ์๋ช ์ด ๊ฐ๊ฑฐ๋ ๊ธธ์ด์ผ ํ๋ค. ๋ช ํํด์ก๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
- 1
- 1
- 75
Q&A
๋ณ์ ๊ฐ๋ฆฌ๊ธฐ shadowing ์ ๋ฃ๊ณ ๊ถ๊ธํ์ ์ด ์๊ฒผ์ต๋๋ค.
์๋ ํ์ธ์ ์์ธ๋, ์๊ฐ ๋ฐ ์ข์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค. ํด๋น ๋ด์ฉ์, ์์ ๊ถ ์ด๋๊ณผ ๋น๋ฆผ์ ๋ฃ๊ณ ๋์๋ฉด ๋ ์์ธํ ์ดํดํ์ค ์ ์๋ ๋ด์ฉ์ด๋ผ, ํด๋น ์ฃผ์ ๊น์ง ํ์ตํ์ ๋ค์์ ๋ง์์ฃผ์๋ฉด ๊ทธ ๋ ๋ ์์ธํ ์ค๋ช ๋๋ฆด๊ฒ์. ๋ฏธ๋ฆฌ ์ค๋ช ์ ํํธ๋ฅผ ์กฐ๊ธ ๋๋ฆฌ์๋ฉด, ๋ณ์์ ์๋ฆฌ์ก์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌ์คํธ๊ฐ ์์ ๊ถ์ด๋ผ๋ ๊ฐ๋ ์ผ๋ก ๋ฑ ํ๋์ ๋ณ์๋ง ๊ทธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ ํ์ฌ ๊ด๋ฆฌ๋ฅผ ํ๊ณ , ๊ทธ ์์ ํ ๋ณ์๊ฐ ์ค์ฝํ๋ฅผ ๋ฒ์ด๋๋ฉด ํด๋น ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋๋ ์์คํ ์ ๋๋ค. ์ด ๊ฒฝ์ฐ '๋ณ์ ๊ฐ๋ฆฌ๊ธฐ'๋ก ์ด๋ค ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ด ๋ค๋ฅธ ์๋ก์ด ๋ณ์๋ก ๊ฐ๋ ค์ง๊ฒ ๋๋ฉด, ๊ฐ๋ฆผ ๋นํ ๋ณ์๋ ์ด๋ฏธ ์์ ๊ถ์ ๋นผ์๊ธด ๊ผด์ด๋ผ ๋ ์์ ํ์ง ๋ชปํ๊ณ ์ฌ์ฉ๋ ๋ชปํ๊ฒ ๋ ํฐ์ ๋๋ค. { // ๋ฐ๊นฅ ๋ธ๋ก let x = 1; { // ์์ชฝ ๋ธ๋ก let x = x + 1; } // ์์ชฝ ๋ธ๋ก์ ๋์จ ๋ค์์ x ์ ๊ทผ ๊ฐ๋ฅํ๊ฐ? println!("x = {}", x); }ํ์ตํ์ ์์ ์์ ์์ ๊ถ ๊ฐ๋ ์ด ์์ง ๋์ค์ง ์์๋๋ฐ์, i32๊ฐ์ ํ์ ๋ค์ ์์ ๊ถ ์ด๋์ด ์ผ์ด๋์ง ์๊ณ Copy๊ฐ ์ผ์ด๋๊ธฐ ๋๋ฌธ์, ๊ฐ๋ ค์ง ๋ณ์๋ ์๋ก์ด ๋ณ์๋ ๋ชจ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ์์ ํ ์ํ์ ๋ง์ฐฌ๊ฐ์ง์ด๊ณ , ๊ฐ๊ฐ ์ค์ฝํ๋ฅผ ๋ฒ์ด๋ ๋ ํด์ ๋๋ ์ํ์์. Copyํธ๋ ์ดํธ๋ก ์์ ๊ถ ๋ณต์ฌ๊ฐ ์ผ์ด๋์ง ์๋ ๋ณ์์ ๊ฒฝ์ฐ์๋, ์ด๋ฏธ ์์ชฝ๋ธ๋ก์ผ๋ก ์์ ๊ถ์ด ๋์ด๊ฐ์ ํ ๊ณ , ๋ฐ๊นฅ์์ ์๋ ๋ณ์๋ฅผ ์ฐ๋ ค๊ณ ํ๋ฉด ์ด๋ฏธ ์์ ๊ถ์ด ์๊ธฐ ๋๋ฌธ์ ๋ ์ฐ์ง ๋ชปํ๋ ์ํฉ์ด ๋ ๊ฑฐ์์. ๋ ๋ค ์ฐ๊ณ ์ถ๋ค๋ฉด, shadowingํ ๋ clone()์ ํด์ ๊ฐ์ ธ๊ฐ๋ฉด ๋๊ฒ ์ต๋๋ค. ์์ ๊ถ ๊ฐ์๋ ๋ฃ๊ณ ๋์ ๋ค์ ๋ง์ ๋ถํ๋๋ ค์.
- 1
- 1
- 98
Q&A
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ท์น์์ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
์๊ฐ ๋ฐ ์๋ฆฌํ ์ง๋ฌธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.์คํํด๋ณด์ ๋ด์ฉ์ฒ๋ผ (s, s.len())์ผ๋ก ์๋ต ํํ์ ์์๋ฅผ ๋ฐ๊พธ์์ ๋, ์๋์ ๊ฐ์ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ์์ต๋๋ค. (์ฌ์ง) ์๋ฌ์ ๋ด์ฉ์, ํํ์ ์ฒซ๋ฒ์งธ ์์๋ก์จ, s๋ฅผ ๋ฐํํ๊ธฐ๋ก ํ๊ธฐ ๋๋ฌธ์, ์ด ์์ ์ ์ด๋ฏธ ์์ ๊ถ ๋ฐ๋ฉ์ด ์ด๋ค์ก๋ค๊ณ ๋ณด๋ ๊ฑฐ๋ผ๊ณ ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฏธ ์์ ๊ถ์ด ๋ฐ๋ฉ๋ s๋ฅผ ์ด์ฉํด์ .len()๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค ํ ๋์ ์ํฉ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด, len์ ๋ฏธ๋ฆฌ ๊ฐ์ ๊ตฌํด๋๋ฉด ๋๊ฒ ์ต๋๋ค. fn main() { let s: String = String::from("ํฌ๋ก"); let (s, len) = string_length(s); println!("๋ฌธ์์ด {}์ ๊ธธ์ด๋ {}", s, len); } fn string_length(s: String) -> (String, usize) { let len = s.len(); (s, len) }๊ดํ ๋ฒ๊ฑฐ๋ก์์ด๋, ์๋๋๋ก usize๋ฅผ ์์ ๋ด์ ํํ์ ๋ฐํํ๋ ๊ฒ์ด ํธํ๊ฒ ๊ณ , ๋ ๋์๊ฐ ์ดํ ๊ฐ์์ ์ค๋ช ๋๋ฆฌ๋ ์๋ ๊ฐ๋ ์ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.์ฐ์ ์ด ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ํต์ฌ์, ์์ ๊ถ์ ์ด๋ ์์ ์ ๊ดํ ๊ฒ์ด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 1
- 1
- 155
Q&A
ํํ๊ณผ ๊ตฌ์กฐ์ฒด ์ฐจ์ด ์ค๋ช ์ ๊ดํ ์ง๋ฌธ
์๊ฐ ๋ฐ ์ข์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค. ๊ตฌ์กฐ์ฒด์ ํํ ํผ๋ ์ฐจ์ดstruct Color(i32, i32, i32); struct Point(i32, i32, i32);์ฌ์ค Color๋ ๋ณดํต (u8, u8, u8) ๊ฐ์ ํ์ ์ ์ฐ๊ฒ ์ง๋ง, ํธํ ๋น๊ต๋ฅผ ์ํด i32 3๊ฐ๋ก ๊ตฌ์ฑํ๋ค๊ณ ์นฉ์๋ค. ์ด ์ํฉ์์fn drawSphere(point: Point, color: Color) { // ... ๋ฐ์ง๋ฆ 1์ธ ๊ตฌ๋ฅผ ๊ทธ๋ฆฌ๋ ํจ์ } fn main() { let point = Point(0, 0, 0); let color = Color(255, 255, 255); drawSphere(point, color); }์ด๋ ๊ฒ ์์ ์๋ค๊ฐ ํฐ์์ ๋ฐ์ง๋ฆ 1์ง๋ฆฌ ๊ตฌ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ ์ํฉ์ด๋ผ๋ฉด, drawSphere์ ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์๋ ๋ฐ๋์ Pointํ์ ์ ๊ตฌ์กฐ์ฒด ํํ์ด ๋ค์ด๊ฐ์ผ ํ๊ณ , ๋๋ฒ์งธ๋ ๋ฐ๋์ Colorํ์ ์ ๊ตฌ์กฐ์ฒด ํํ์ด ๋ค์ด๊ฐ์ผ ํ๋ฏ๋ก, ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์์ผ ์ผ์ด ์๊ฒ ์ต๋๋ค.fn drawSphere(point: (i32, i32, i32), color: (i32, i32, i32)) { // ... ๋ฐ์ง๋ฆ 1์ธ ๊ตฌ๋ฅผ ๊ทธ๋ฆฌ๋ ํจ์ } fn main() { let point = (0, 0, 0); let color = (255, 255, 255); drawSphere(color, point); }๊ทธ๋ฐ๋ฐ ์ด๋ฒ์๋ ๊ทธ๋ฅ ํ๋ฒํ ํํ์ ์จ๋ณด์๋๋ฐ์, ์ด๋๋ ๋ ๊ฐ์ ํ์ ์ด (i32, i32, i32)๋ก ๋์ผํ๋ฏ๋ก, drawSphere๋ฅผ ํธ์ถํ๋ ์์ ์, ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ํผ๋ํด์ ๊ฑฐ๊พธ๋ก ์ ์์์๋, ํ์ ์ฒด์ปค ์ ์ฅ์์๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก ์ ์ ์ปดํ์ผ์ด ๋๊ฒ ์ต๋๋ค. ํ์ง๋ง, ์คํํ๋ฉด, (255, 255, 255) ์ขํ์ ๊ฒ์์ ๊ตฌ๊ฐ ๊ทธ๋ ค์ง๊ฒ ์ฃ .์ด๋ฐ ์ํฉ์ ๋ง์๋๋ฆฌ๋ ๊ฒ์ด๊ธด ํฉ๋๋ค. ํ์ง๋ง ํํธ, ์์๋ ์ฝ๋ ์๋ํฐ์์ ๋ช ์์ ์ผ๋ก ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์ ๋ณด์ฌ์ฃผ๊ธฐ๋ ํ๋, ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋์ง ์์ ์๋ ์๊ธฐ๋ ํ๊ฒ ์ต๋๋ค.๊ตฌ์กฐ์ฒด ํํ๊ณผ ๊ตฌ์กฐ์ฒด ๋์ ์ธ๋ฏธ์ฝ๋ก ์ฐจ์ด์ฌ์ค ์ ๋ ํฌ๊ฒ ๋ชจ๋ฅด๊ณ ์ฐ๊ณ ์๋ ๋ถ๋ถ์ธ๋ฐ, ์ด ๋ถ๋ถ์ ๋ฌ์คํธ ์ปดํ์ผ๋ฌ๋ ๋ฆฐํฐ, ํฌ๋งทํฐ๊ฐ ์์์ ์ ๊ด๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ํค๋๋๋ก ํ๋ฉด ๋๋ ๋ถ๋ถ ๊ฐ์ต๋๋ค. ์๋ง๋ ๋ฌธ๋ฒ์ ์ผ๋ก๋ ๊ด์ต์ ์ผ๋ก ๋ ๊ฒฝ์ฐ์ ์ธ๋ฏธ์ฝ๋ก ์ฌ์ฉ์ฌ๋ถ๋ฅผ ๊ฐ๋ผ๋์ ๊ฒ ๊ฐ์ต๋๋ค. ์ ํํ ๊ฒ์ ๋ฌธ๋ฒ ๊ท์น์ ์์ธํ ์ดํด๋ณด๋ฉด ์ ์ ์๊ฒ ์ต๋๋ค.(์ฌ์ง)๊ทธ๋ฅ ํธํ๊ฒ๋ ์ฝ๋์๋ํฐ์์ (์๋ง๋ ๋ฌ์คํธ ํฌ๋งทํฐ๋ ๋ฆฐํฐ๊ฐ ์๋ ค์ฃผ๋ ์ ๋ณด๋ฅผ ํ ๋๋ก) 'braced struct declarations are not followed by a semicolon'์ด๋ผ๋ฉด์ ์ ์๋ ค์ฃผ๊ณ ๋นจ๊ฐ๊ฒ ํ์ํด์ฃผ๋ฏ๋ก, ์ธ๋ฏธ์ฝ๋ก ์์ด ์ฐ๋ฉด ๋๋ ์ํฉ์ ๋๋ค. ํน์ ๋ ๊ถ๊ธํ์ ์ ๋ฌธ๋ฒ ๊ท์น์ ์ดํด๋ณด์ จ๋ค๋ฉด, ์ ๊ฒ๋ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 295
Q&A
trait๋ฅผ ์ธ์๋ก ๋ฐ์ ๋ &impl๊ณผ &dyn์ฐจ์ด
์ฌ๋ ๊น์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค. impl์ ์ ์ ๋์คํจ์น๋ผ๊ณ , ์ปดํ์ผ ํ์์ ํด๋น ํธ๋ ์ดํธ๋ฅผ ๊ตฌํํ ๊ตฌ์ฒด์ ์ธ ํ์ ์ ํ์ ํ ์ ์๋ ๊ฒฝ์ฐ์ด๊ณ , dyn๊ฐ์ ๊ฒฝ์ฐ ๋์ ์ผ๋ก ๋ฐํ์์ ํ์ ํ๋ ๊ฒฝ์ฐ์ ํ์ฉํฉ๋๋ค. ์ ์๋ ์ปดํ์ผํ์์ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด๋ฅผ ํ์ ํด์ผ ํ๋ ๋์ ์ ์ฑ๋ฅ ํ๋ํฐ๊ฐ ์๊ณ , ํ์๋ ์ปดํ์ผ ํ์์ ๋ฏธ๋ฆฌ ์ ํด์ง์ง ์์ ํด๋น ํธ๋ ์ดํธ ๊ตฌํ์ฒด๋ฅผ ํ์ฉํ ์ ์์ง๋ง, ๋ฐํ์์ ํด๋น ๊ตฌํ์ฒด๋ฅผ ์ซ์๊ฐ์ผ ํ๋ ๋ถ๋ด์ด ์์ต๋๋ค.ํด๋น ์ฃผ์ ๋ ์ค๊ธ ๊ฐ์์ ์ ์ ๋ฆฌํด๋ณผ๊ฒ์.์๊ฐ ๋ฐ ์ง๋ฌธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
- 1
- 2
- 305
Q&A
๊ตฌ์กฐ์ฒด๋ ์ธ์ ๋ Heap์ ์ ์ฅ๋๋์??
์๋ฆฌํ ์ง๋ฌธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋๋ถ์ ์ ๋ ๋ค์ ํ๋ฒ ํ์ตํ๊ฒ ๋์์ต๋๋ค. ๊ตฌํํ์ ๊ตฌ์กฐ์ฒด๋ ์คํ์ ์ ์ฅ๋๋ ๊ฒ์ด ๋ง๊ฒ ์ต๋๋ค. ๊ตฌ์ฑ๋ฉค๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ์ปดํ์ผํ์์ ์ฌ์ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋์ฑ ๊ฐ๋ฅํฉ๋๋ค. ์คํ๊ณผ ํ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ ํ ๋น๋๋๊ฐ๋ฅผ ์ค์ํ๊ฒ ์ค๋ช ๋๋ ธ๊ธฐ์ ํผ๋์ ๋ผ์น ๊ฒ ๊ฐ์ต๋๋ค.์์ ๊ถ ์ด์ ์ ์ฌ์ค ์๋ฐํ๊ฒ ๋ฐ์ง๋ฉด ์์ ๊ถ์ ๋์(์ฆ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ณ ์๋ ๋ฐ์ดํฐ)์ด ๋ณต์ฌ ๋๋๊ฐ ์๋๊ฐ๊ฐ ๋ ์ค์ํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ์คํ์ ์์นํ๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐํ(i32 ๋ฑ)์ ๊ธฐ๋ณธ์ ์ผ๋ก Copy ํธ๋ ์ดํธ๊ฐ ๊ตฌํ๋ ์ํ์ด๊ณ , ์ง์ ์ ์ธํ๋ Struct๋ ๊ธฐ๋ณธ์ ์ผ๋ก๋ Copyํธ๋ ์ดํธ๊ฐ ๊ตฌํ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ณต์ (Copy)๊ฐ ๋ฐ์ํ์ง ์๊ณ ์์ ๊ถ์ด ์ด๋๋์ด ๋ฒ๋ฆฌ๋ ์ํฉ์ธ๋ฐ์, ๊ตฌํํ์ ์ฝ๋์์ ํด๋น ๊ตฌ์กฐ์ฒด์ ๋ํด Copyํธ๋ ์ดํธ๋ฅผ ๊ตฌํํ์ ๋ค๋ฉด, ์์ ๊ถ์ด ์ด๋๋์ง ์๊ณ ๋ณต์ฌ๋์ด ํ์ฉ ๊ฐ๋ฅํฉ๋๋ค. #[derive(Clone, Copy)] struct Rectangle { width: u32, height: u32, } fn main() { let rect = Rectangle { width: 20, height: 30, }; println!( "๊ฐ๋ก๊ฐ {}, ์ธ๋ก๊ฐ {}์ธ ์ฌ๊ฐํ์ ๋ฉด์ ์ {}์ด๋ค.", rect.width, rect.height, area(rect) ); print!("{:?}", rect.width); } fn area(rect: Rectangle) -> u32 { rect.width * rect.height } ์ด๋ ๊ฒ ๊ตฌํํ์๋ฉด ์ปดํ์ผ๋ฉ๋๋ค. ์ฒซ์ค์ derive๋ฅผ ์ด์ฉํด์ Copyํธ๋ ์ดํธ๋ฅผ ๊ตฌํํ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋์ mainํจ์์ ์คํ๊ณต๊ฐ๊ณผ, areaํจ์์ ์คํ ๊ณต๊ฐ ๋ชจ๋๋ฅผ ์ค๋ณตํด์ ์ฐจ์งํ๊ณ ์๊ฒ ๋๊ฒ ์ต๋๋ค.๋ค์ ์ ๋ฆฌํ๋ฉด, Heap์ ์ฐจ์งํ๋ ๋ฐ์ดํฐ๋ผ๊ณ ํ๋๋ผ๋ Copyํธ๋ ์ดํธ๋ฅผ ๊ตฌํํ๋ฉด ๋ด์ฉ์ด ๋ณต์ฌ๋๋ฉด์, ์์ ๊ถ ์ด๋์ด ์ผ์ด๋์ง ์๊ฒ ์ต๋๋ค.์ค๊ธ๊ณผ์ ์ ์ ์ํ ์์ ์ธ๋ฐ, ๋ณด์ถฉํด์ ์ ์ค๋ช ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์๊ฐ๊ณผ ์ง๋ฌธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
- 2
- 2
- 369
Q&A
ํน์ ์ด๋ค ํฐํธ์ผ๊น์?
์ฌ๋ฌ ํฐํธ๋ฅผ ์ผ๋๋ฐ์, ๊ณ ์ด๋์IBM Plex Sans KRPretendard ์ ๋๋ค. ๋์์ด ๋์ จ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
- 0
- 2
- 409
Q&A
Lifecycle ๊ฐ์์์ ๋ ๋ฌธ์์ด ์ฌ๋ผ์ด์ค๋ฅผ ๋น๊ตํด ๊ธด ๋ฌธ์์ด ์ฌ๋ผ์ด์ค๋ฅผ ๋ฆฌํดํ๋ ๊ฒ ๊ด๋ จ ์ง๋ฌธ
์๋ฆฌํ ์ง๋ฌธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ค, ์๋ฌด๋๋ ์์ ๊ถ๊ณผ ์๋, ๊ทธ๋ฆฌ๊ณ ์๋ช ์ฃผ๊ธฐ(๋ผ์ดํ์ฌ์ดํด)๋ฑ์ด ์ข ์์ํ๊ธฐ ๋๋ฌธ์ ์ค๋ช ๊ณผ ์ดํด๊ฐ ์ด๋ ค์ด ๊ฒ ๊ฐ์ต๋๋ค. ์๋ง ์๋ ์์ ์ ๋ํ ์ง๋ฌธ์ด์ ๊ฒ ๊ฐ์ต๋๋ค. fn str_lifetime() { let s1 = String::from("๊ฐ๋๋ค"); let s2 = "ํ๋๋์ "; let res = longest(s1.as_str(), s2); println!("๋ ๊ธด ๋ฌธ์์ด์ {}", res); }/* ์๋ช ํ๊ธฐ๋ฅผ ์ ํ ๊ฒฝ์ฐ */ fn longest(s1: &'a str, s2: &'a str) -> &'a str { if s1.len() > s2.len() { s1 } else { s2 } }๋ฌ์คํธ์ ํจ์์์ ๋ก์ปฌ ๋ณ์๊ฐ์ ๋ฆฌํดํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๋ก์ปฌ ๋ณ์์ ๋ํ ์์ ๊ถ์ด ํจ์ ์์ ์๋คํ์ ๋, ๋ฐํ๊ฐ์ผ๋ก ๋์ด๊ฐ๋ฉด ํด๋น ์์ ๊ถ์ด ํจ์ ํธ์ถ์์๊ฒ๋ก ์ด์ ๋๊ณ , ํธ์ถํ ์ ์ฅ์์๋ ํด๋น ๋ฐํ๊ฐ์ ๋ฌธ์ ์์ด ์ ํ์ฉํ ์ ์์ต๋๋ค.๊ฒ๋ค๊ฐ ์์ ๊ถ "์๋"์ ๊ฒฝ์ฐ์๋ ์ ์ด์ ๋ํํ ์๋ ์์ ๊ถ์ด ์๋๋ผ ๋น๋ ค์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ์ธ๋ถ์ ์ฐธ์กฐ๊ฐ์ ๋น๋ ค์จ ํจ์ ์ ์ฅ์์๋ ์ ์ด์ ๋ด ์์ ๊ฐ ์๋๋๋ค. ๋ฐํ์ ํ๋ ์ํ๋ ์ ์ด์ ๋ด ์์ ๊ฐ ์๋์๊ธฐ ๋๋ฌธ์ ์์ ๊ถ ๊ณ ๋ฏผ ๋ฌธ์ ์์ ์์ ๋กญ๊ฒ ๋ฉ๋๋ค. ํด๋น ๋ผ์ดํ์ฌ์ดํด์ ๋ํ ์ค๋ช ์, ์์ ๊ถ ์๋์ ์ํฉ์์, ๊ทธ ์๋๊ฐ ์ฐธ์กฐ์ ์๋ช ์ ๋ช ์ํด์ผ ํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋ํ ๊ฒ์ธ๋ฐ์, ๊ฐ์ ์ค์ ์ค๋ช ์ ํ ๋ด์ฉ์ ๋๋ค๋ง, ์ฌ๊ธฐ ๊ธ๋ก ๋ค์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.longestํจ์์์ s1๊ณผ s2๋ผ๋ ๋ฌธ์์ด์ฌ๋ผ์ด์ค, ๊ทธ๋ฌ๋๊น ์ฐธ์กฐ๊ฐ์ ์๋ํด ์์ ๋ฌด์ธ๊ฐ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์ฝ๋ ์์์๋ s1๊ณผ s2์ len()ํจ์๋ฅผ ์จ์ ๊ธธ์ด๋ฅผ ํ๋จํด๋ณด๊ณ , ๋ ๊ธด ์ฐธ์กฐ๊ฐ์ ๋ฐํํ์ต๋๋ค. ๋ฌ์คํธ ์ปดํ์ผ๋ฌ ์ ์ฅ์์๋ ๋ฐํ์์์ ๋ฌ๋ผ์ง ์ ์๋ (์ฌ์ค ์ด ์ฝ๋์์๋ s1๊ณผ s2์ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ด ํ๋์ฝ๋ฉ๋์ด์๊ธฐ ๋๋ฌธ์ ์ด์ฉ๋ฉด ์ ์๋ ์๊ฒ ์ต๋๋ค๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์์ด ๊ฐ์ ๋ฐํ์์ ๋ค๋ฅธ ๊ฐ์ด ๋ฐ์ํ๊ฒ ์ฃ ) ๋ฌธ์์ด๋ค์ ๊ธธ์ด๋ฅผ ๋ฏธ๋ฆฌ ์ ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ s1์ฐธ์กฐ๊ฐ๊ณผ s2์ฐธ์กฐ๊ฐ ์ค ์ด๋ ๊ฒ์ด ๋ฐํ๋ ์ง ๋ชจ๋ฅด๋ ์ํฉ์ ๋๋ค.์ด๋ด ๋, ๋ฌ์คํธ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ ์ค ์ด๋๊ฒ์ด๋ ๋ฐํ ๋ ์ ์๊ณ , ๊ทธ ๋ผ์ดํ์ฌ์ดํด์ด ๋ฐํ๊ฐ์ ๋ผ์ดํ์ฌ์ดํด ์กฐ๊ฑด๊ณผ ๋ง์ ์ ์๋๋ก ๋ช ์ํด์ฃผ๋ ์์ ์ธ ๊ฑฐ์ฃ . ๊ทธ๋ ๊ฒ ์ปดํ์ผ๋ฌ์ ์๋ ๊ฒ์ฌ๊ธฐ (borrow checker)๊ฐ 'a๋ผ๋ ๋์ผ lifecycle ๊ธฐ์ค์ผ๋ก ๊ฒ์ฌ๋ฅผ ์งํํ ์ ์๊ฒ ํด์ฃผ๋ ์ํฉ์ ๋๋ค.๋ค์ ๊ธ๋ก ์ ์ด๋ ์ด๋ ค์ด ๋ด์ฉ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ถ๊ฐ ์ค๋ช ๋๋ฆฌ๋ฉด ์ข์ ๋ถ๋ถ ์์ผ์๋ฉด ํธํ ๋ง์ ๋ถํ๋๋ฆฝ๋๋ค. ์๊ฐํด์ฃผ์๊ณ , ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 232