모듈:담당자/문서

Module

이 모듈에는 Lua 객체의 문자열 표현을 생성하는 기능이 포함되어 있습니다.Python의 repr 기능에서 영감을 받았습니다.

사용.

모듈을 사용하려면 먼저 모듈을 가져와야 합니다.

현지의 mRepr = 요구하다("모듈:대표") 

그런 다음 포함된 기능을 사용할 수 있습니다.각 기능에 대한 설명서는 다음과 같습니다.

리퍼

이 함수는 주어진 Lua 객체의 문자열 표현을 생성합니다.이 함수가 생성하는 문자열을 복사하여 Lua 프로그램에 다시 붙여넣으면 원래 개체를 재현할 수 있습니다.이것이 모든 가치에 적용되는 것은 아니지만, 단순한 경우에도 적용되어야 합니다.

예를들면,mRepr.repr({bool = true, number = 6, str = "hello world"})문자열을 출력합니다.{bool = true, number = 6, str = "hello world"}.

기본 구문:

mRepr.리퍼(가치) 

전체 구문:

mRepr.리퍼(가치, 옵션들) 

매개 변수:

  • value문자열로 변환할 값입니다.임의의 Lua 값일 수 있습니다.이 매개 변수는 선택 사항이며 기본값은nil.
  • options옵션 표입니다.이 매개 변수는 선택 사항입니다.

옵션 테이블에서 다음 옵션을 지정할 수 있습니다.

  • prettytrue이면 문자열을 "예쁜" 형식으로 출력합니다(예쁜 인쇄에서처럼).테이블 항목 사이에 새 줄과 들여쓰기가 추가됩니다.거짓인 경우 한 줄에 모든 형식을 지정합니다.기본값은 false입니다.
  • tabs참이면 탭으로 들여쓰기, 그렇지 않으면 공백으로 들여쓰기를 수행합니다.기본값은 true입니다.이것은 다음과 같은 경우에만 효과가 있습니다.pretty사실입니다.
  • spaces들여쓰기할 공백 수(예:tabs거짓입니다.기본값은 4입니다.이것은 다음과 같은 경우에만 효과가 있습니다.pretty사실입니다.
  • semicolons참인 경우 테이블 항목은 세미콜론으로 구분됩니다.거짓인 경우 공백으로 구분됩니다.기본값은 false입니다.
  • sortKeys참인 경우, 다른 테이블 키 형식이 적용된 후(예: 대괄호 추가) 테이블 키를 사전 순서로 정렬합니다.거짓인 경우 테이블 키는 임의의 순서(쌍 기능에 의해 처리되는 순서)로 출력됩니다.기본값은 true입니다.
  • depth최상위 개체를 출력할 들여쓰기 깊이입니다.기본값은 0입니다.이것은 다음과 같은 경우에만 효과가 있습니다.pretty사실입니다.

특징:

  • 함수는 순환 테이블을 우아하게 처리합니다. 순환을 감지하면 내부 테이블은 다음과 같이 렌더링됩니다.{CYCLIC}.
  • __tostring메타메소드가 사용 가능한 경우 자동으로 호출됩니다.
  • 테이블의 시퀀스 부분은 항상 시퀀스로 렌더링됩니다.키-값 쌍도 있는 경우 시퀀스 부분 뒤에 렌더링됩니다.

여기 모든 종과 휘파람을 자랑하는 예가 있습니다.

현지의 마이테이블 = {  안녕하세요. = "repr",  유용성 = 100,  사용이 간편함 = 진실의,  순서 = {"a", "시퀀스", "테이블"},  혼합의 = {"a", "시퀀스", 와 함께 = "키-값 쌍"},  하위 테이블 = {   추가 정보 = "하위 테이블에서 재귀적으로 호출"  },  ToString 사용 = 상을 차리다({}, {__ 문자열로 = 기능. () 돌아가다 "__to 문자열 함수는 자동으로 호출됩니다." 끝.}),  ["$YMBOL$"] = "Lua 식별자가 아닌 키가 인용됨";  [{또한. = "키와 같은 테이블도 작동합니다.";}] = "만약 당신이 그것이 필요하다면",  주기적인 = {메모 = "주기 표가 {CYCLIC}(으)로 인쇄됨"} } 마이테이블.주기적인.주기적인 = 마이테이블.주기적인  주기 만들기   현지의 옵션들 = {  예쁘다 = 진실의,      \n과 들여쓰기로 인쇄하시겠습니까?  세미콜론 = 거짓의, 테이블을 인쇄할 때 쉼표(,) 대신 세미콜론(;)을 사용합니다.  정렬 키 = 진실의,    사전 테이블을 인쇄할 때 키를 알파벳 순으로 정렬하시겠습니까?  공간 = 3,         인쇄를 예쁘게 할 때 들여쓰기 위해 몇 칸을 사용합니까?   = 거짓의,       예쁜 인쇄를 할 때, 공백 대신 탭을 사용합니까?  깊이 = 0,          예쁜 인쇄를 할 때, 어느 단계에서 들여쓰기를 시작해야 합니까? } mw.로그.(mRepr.리퍼(마이테이블, 옵션들)) 

그러면 다음 항목이 기록됩니다.

["$YMBOL$"] = "Lua 식별자가 아닌 키는 따옴표로 묶임", [{또한 = "키로서의 테이블도 작동함"}] = "필요한 경우", 주기적 = {cyclic = {CYCLIC}(으)로 인쇄됨", 참고 = "cyclic table은 단지 {CYCLIC}(으)로 인쇄됨", 안녕하세요 = "rep", 쉬운 일입니다.= true를 사용하려면 혼합 = {"a", "sequence", = "key-value pairs" =, 시퀀스 = {"a", "sequence", "table", subTable", = {moreInfo = "callself on sub-value", 유용성 = 100, usesToString 함수는 자동으로 호출됩니다.

호출Repr

이 함수는 함수 호출의 문자열 표현을 생성합니다.

기본 구문:

mRepr.호출Repr{funcName = 함수Name, 논병아리 = 함수 인수} 

전체 구문:

mRepr.호출Repr{funcName = 함수Name, 논병아리 = 함수 인수, 옵션들 = 옵션들} 

매개 변수:

  • funcName함수 이름입니다.이 매개 변수는 필수이며 문자열이어야 합니다.
  • args함수 인수입니다.시퀀스 테이블이어야 합니다.시퀀스 항목은 임의의 Lua 값일 수 있으며, 각 항목은 [#repr] 함수를 사용하여 렌더링됩니다.이 인수는 선택 사항입니다.
  • options옵션 표입니다.옵션은 repr 함수의 경우와 동일합니다.이 인수는 선택 사항입니다.

예:

mRepr.호출Repr{funcName = "myFunc", 논병아리 = {"테스트", 4, 진실의, {"a", "b", "c"}}} 

결과:myFunc("test", 4, true, {"a", "b", "c"})