모듈 토크:루아급

Module talk

글로벌

@알렉시스쿠티뉴:모듈 토크에서 논의한 내용에 추가합니다.TableTools#어레이는 일반적이어야 하지 않습니까?,저는 이 아주 멋진 모듈을 잠깐 보았습니다.당신이 고려해야 할 몇 가지 문제가 있을 수 있습니다.첫째, 많은 모듈에 모듈이 필요합니다.글로벌 없음.이러한 모듈 중 하나가 여기서 무언가를 사용하려고 하면 이 모듈에 여러 글로벌이 있기 때문에 충돌할 가능성이 높습니다.함수 테이블 + 클래스 + 인스턴스가 포함된 테이블을 반환해야 합니까?둘째, 함수 try_parser에서 다음을 호출하는 것을 알고 있습니까?type()루아의 기능을 부르는 것이지, 그것이 아닙니다._G.type수정된 기능?Johnuniq (대화) 10:43, 2021년 7월 11일 (UTC) 응답 [응답]

@Johnuniq:글로벌은 필수는 아니지만 매우 권장됩니다.저는 이러한 모듈이 모듈 사용을 중단했다면 더 좋습니다.그들이 수업을 사용한다면 글로벌은 없습니다.이 모듈은 다른 모듈의 구조 및 코드화 방식을 근본적으로 변경하여 글로벌로 전환하는 데 적합합니다.난 그걸 몰랐다.type버그. 그 함수 오버라이드 아래에서 호출하면 안 된다는 것을 알고 있었는데, 제출 전 점검 때 파서가 호출했다는 것을 까맣게 잊고 있었습니다.그나저나 나는 이 모듈을 광범위하게 테스트하지 않았습니다.처음에는 다른 기본형 모듈(예정)에서 예시와 실제 사용법을 통해 테스트해보고 싶었습니다.알렉시스쿠티뉴 (토크) 2021년 7월 12일 05:24, UTC 답변 [답장]
문제는 사람들이 의도하지 않은 전역을 생성하는 오타를 감지할 방법이 없다는 것입니다. 따라서 모듈:no_globals는 상당히 일반적이며 점점 더 그럴 수도 있습니다.저는 글로벌을 보여주는 스크립트가 있어서 사용하지 않습니다.상관없어요, 그냥 제가 그 문제를 지적할까 해서요."type"을 다시 입력하면 변수 이름을 다음으로 변경합니다.lua_type그래서 코드나 판독기에 혼란이 있을 수 없습니다.Johnuniq (talk) 2021년 7월 12일 05:31, UTC 답변 [답장]
@Johnuniq: 글쎄요, 제 생각에 이상적인 해결책은 모듈에서 ("arg" 외에도) 더 많은 예외를 여는 것입니다.Lua 클래스 이후에는 전역 및/또는 필수 항목이 없습니다.알렉시스쿠티뉴 (talk) 6:06, 2021년 7월 12일 (UTC) 회신 [답장]
그건 당신에게 달렸어요, 저는 단지 당신이 그 문제를 인지하고 있는지 확인하고 싶었어요.어쨌든, 만약 당신이 원한다면, 당신은 미래에 그것이 작동하는 방식을 바꿀 수 있습니다.Johnuniq (대화) 2021년 7월 12일 07:26 (UTC) 응답 [응답]
루아와의 협약은 글로벌 사용을 최소화하는 것입니다.LuaRocks에서 사용하는 스타일 가이드인 [1][2]를 참조하십시오.Gonnym (talk) 2021년 7월 13일 14:06 (UTC) 응답 [응답]

네, 글로벌을 최소화하도록 노력하겠습니다.현재 새로운 글로벌은 다음과 같습니다.

  • class
  • issubclass
  • isinstance
  • try

계획된 선택적 전역 기본 유형은 다음과 같습니다.

알렉시스쿠티뉴 (대화) 2021년 7월 21일 23:13 (UTC) 응답 [응답]

이 모듈을 널리 사용하려면 전역이 없어야 합니다.그들이 왜 필요한가요?필요한 모듈의 "이름 공간"을 사용하고 x.class(여기서 x는 require('모듈:루아 클래스')).Johnuniq (대화) 2021년 7월 22일 02:42 (UTC) 회신 [회신]
글로벌은 나쁜 것이니 피해주세요.최소한으로 그들을 무시할 수 있도록 합니다.명확하게 말하면, 글로벌은 코드를 테스트하기 어렵게 만들고 이러한 글로벌을 사용하는 코드는 휴대할 수 없게 됩니다.2001:4644:13BE:0:E955:D3DE:360E:9F1D (토크) 16:52, 2022년 12월 18일 (UTC) 회신 [회신]

그렇지 않으면

그 중 몇 가지elseif이전 절이 추가 평가에서 종료되기 때문에 피할 수 있습니다.2001:4644:13BE:0:E955:D3DE:360E:9F1D (토크) 16:56, 2022년 12월 18일 (UTC) 회신 [회신]

단언하다

검정 절 뒤에 오류 문이 나타나는 경우가 여러 번 있습니다.다음으로 대체할 수 있습니다.assert따라서 명시적인 if 절을 피합니다.그것은assert(<test>, <message>)명시적 오류가 수정될 수 있는 유일한 위치는 수준에서 리디렉션이 적절할 때이며, 이는 다음과 같은 두 번째 인수입니다.error(<message>, <level>). 2001:4644:13BE:0:E955:D3DE:360E:9F1D (토크) 17:01, 2022년 12월 18일 (UTC) 회신 [회신]

도서관 Util.다중 형식 선택색인

몇 가지가 있습니다.libraryUtil.checkTypeMultiForIndex인수가 처음 사용된 후.2001:4644:13BE:0:E955:D3DE:360E:9F1D (토크) 17:06, 2022년 12월 18일 (UTC) 회신 [회신]

활자를 짜다

표준 기능을 다시 구현하는 것은 좋지 않은 일이며, 코드를 취약하게 만들고, 휴대할 수 없으며, 관련이 없는 코드가 동일한 컨텍스트에서 실행될 수 없게 만들 수 있기 때문에 사용하기에 완전히 위험합니다.이는 모듈에 영향을 미칩니다.제목 페이지에 있는 것에 추가하여 Lua_set.2001:4644:13BE:0:E955:D3DE:360E:9F1D (토크) 17:12, 2022년 12월 18일 (UTC) 회신 [회신]

리팩터 클래스, 생성자도 있을 수 있습니다.

class함수는 매우 복잡합니다.constructor또한 너무 복잡하다는 경계. 2001:4644:13BE:0:E955:D3DE:360E:9F1D (토크) 18:29, 2022년 12월 18일 (UTC) 회신 [회신]