루아 함수의 그 독틈함은 간혹 C의 함수와 비슷한것이 있는데, 그 중 하나가 바로 가변 개수 인수를 받는 함수 이다. C에서 처럼 특별히 무엇인가 작업을 요하는것은 없고, 아주 간단하게 작성 할 수 있다. 다음 함수를 보자. function add ( ... ) local s = 0 for i, v in ipairs{...} do s = s + v end return s end print( add( 3, 4, 10, 25, 12 ) ) add 함수의 ...
책 정리 검색 결과
저번 장에서 함수가 무엇이고 어떻게 정의하면서 어떻게 쓰이며 독특한 특징을 알아 봤다면, 이번에는 그 독특함 중 신기한 다중 반환에 대해서 이야기 한다. 일전에 다중 배정문에 대해서 설명을 했었다. 다중 배정문이란 a, b = 1, 2 문법을 말한다. 이 다중 반환은 이 다중 배정문을 이용하여, 할당 받을 수 있게 된다. 예를 들어 string.find("hello Lua users", "Lua") 라고 했을 경우 두개의 정수를 벹어 내는데 받을 때, s, e = string.find("hello Lua users", "Lua") 렇게 하면 된다. 그렇다면 어떻게 두개의 값을 반환시킬수 있을까? 간단하다 아래의 소스 코드처럼 하면 된다. function two_func() local m, mi = 1,2..
루아의 입장에서 보는 함수는 문장과 수식을 추상화 하기 위한 주요 기능 중 하나라고 한다. 이렇게 말하면 이게 무슨 말이지? 라고 갸우뚱 한다면, 당신은 정상이다. ... 많이 접해보는 이야기가 아니기 때문일 것이다. : ) C의 함수와 동일한 개념이라고 봐도 무리가 없다. 몇가지 다른 점은 있지만 나중에 정리하도록 하고, 이 원서에는 어떻게 나왔는지 확인해 보자. 원서 확인 : http://www.lua.org/pil/5.html 재미있는 규칙이라면, 루아 함수에게 전달되는 인수들은 ( )
이번 항목은 간단하여 바로 질문을 들어가 본다. 1. 두개의 변수를 받아서 일반적인 < 비교 연산자를 이용해서 더 큰 값을 찾아내는 간단한 max를 작성해보고 함정이 무엇인지 찾아 보라. .. 간단한 max 함수를 inline 화 시켜서 사용 하면 된다. 항목 2. #define을 쓰려거든 const, enum, inline을 떠올리자. 함정을 피해가기 위한 조언으로는 변수의 괄호를 잊지 말고 해 줘야 할 것 식 전체에 괄호를 잊지 말고 씌워 줄 것 다중 변수 계산을 조심 할 것 이름 바꿔 치기를 조심 할것 2. 전처리 매크로로 만들 수 없는 것은? 재귀 매크로가 없다는 것 메크로 주소가 없다는 것 매크로는 디버깅해서 쫒아 갈수 없다는 것 C++ 표준 16.3/8의 주석 7을 인용해 본다면 다음과 같이 ..
Effective C++ 3판에서 봤던 내용이 기억 나는데, 전처리 매크로(#define)가 위험하기 때문에 C++ 스타일을 사용하자고 제안했던 것을 볼 수 있다. 일전에 동기인 강일이형이 보여 주었던 전처리 매크로(#define)의 문제점을 통해서 확신이 들었다. 이번 항목은 이런 전처리 매크로를 아직 쓰는 이유와 어떻게 대처 할 수 있는지에 대해서 이야기 하고자 한다. 1. 헤더 꼬임 방지하기 즉 헤더가 꼬이는 것을 방지하는 것을 위해서 사용 한다. #ifndef __TEST_HPP__ #define __TEST_HPP__ /* 이 내부는 __TEST_HPP__ 가 없을 때만 읽혀진다. */ #endif //__TEST_HPP__ 2. 전처리 기능 접근하기 좀 편하게 진단 코드를 사용 할 수 있기 위..
이번 항목의 네스티드라고 해서 무슨 말이지? 하고 잠깐 생각 했었다. 인터넷에서 검색을 해보니, "함수가 보이는 범위를 특정 함수안에서만 보이는 함수" 를 nested function 이라고 한다. 좀 생소한 느낌이 들었지만, 이런 기능이 C++ 에서도 있다는 것을 알게 되었다. 바로 클래스 내에 있는 클래스, 영어권에선 이런 클래스를 nested class 라고 한다. 우리나라에선 지역 클래스라고 하는거 같지만 이 책을 읽고 전혀 다른 의미인 것을 알게 되었다. 그렇다면 이번 항목의 주요한 질문은 무엇인가? 1. nested class는 무엇이며, 어떤 이유에서 유용하게 쓰일 수 있나? 우선 nested class 를 코드로 보여 준다면 아래와 같다. // 항목 33 : nested function 의..
최근댓글