시계열 데이터베이스에 대한 건조 제품 丨 DolphinDB 코드 모듈 재사용 자습서

소프트웨어 팀 개발 프로젝트에서 개발 효율성과 품질을 향상 시키려면 코드를 패키징하고 재사용해야합니다. DolphinDB 스크립트를 개발에 사용하는 경우 moduleuse메서드를 사용하여 재사용 가능한 모듈을 선언하고 사용할 수 있습니다 .

1. 모듈 소개

DolphinDB에서 모듈은 함수 정의 만 포함하는 코드 패키지를 나타냅니다. 다음과 같은 특징이 있습니다.

  • .dos를 모듈 파일의 접미사로 사용하십시오. dos는 DolphinDB 스크립트의 약어입니다.
  • 모듈 파일은 DolphinDB 노드의 [home] / modules 디렉토리에 저장됩니다.
  • 모듈 파일의 첫 번째 줄은 module 문 문으로 module moduleName시작 합니다.
  • 모듈 파일의 내용에는 함수 정의 만 포함됩니다.

2. 모듈 정의

2.1 모듈 디렉토리 생성

기본적으로 모든 모듈은 [home] / modules 디렉토리에 정의되어 있습니다. [home]은 시스템 구성 매개 변수에 의해 결정되며 homegetHomeDir () 함수를 통해 얻을 수 있습니다. 예를 들어, DolphinDB 노드의 홈 디렉토리는 / root / DolphinDB / server이고, 모듈 파일을 저장하려면이 디렉토리 아래에 modules 하위 디렉토리를 만들어야하며, 최종 모듈 디렉토리는 / home / root / DolphinDB / server /입니다. 모듈.

2.2 모듈 파일 생성

모듈 디렉토리에 .dos 접미사가있는 모듈 파일을 만듭니다 (예 : FileLog.dos). 모듈 파일의 첫 번째 줄은 모듈 선언문이어야합니다. 모듈 선언문의 구문은 다음과 같습니다.

module moduleName

moduleName은 모듈 파일의 이름과 일치해야합니다. 예를 들어 FileLog.dos에서 모듈을 선언합니다.

module FileLog

모듈을 선언 한 후 모듈 코드 작성을 시작할 수 있습니다. 예를 들어 FileLog.dos의 내용은 다음과 같습니다.

module FileLog
//向指定日志文件写入日志
def appendLog(filePath, logText){
	f = file(filePath,"a+")
	f.writeLine(string(now()) + " : " + logText)
	f.close()
}

모듈 파일에서는 캡슐화 된 함수 정의 만 허용되며 다른 비 함수 정의 코드는 무시됩니다.

3. 모듈 가져 오기

DolphinDB에서 use키워드를 사용 하여 모듈을 가져옵니다. use 키워드로 가져온 모듈은 세션이 분리되어 있으며 현재 세션에 대해서만 유효합니다. 모듈을 가져온 후 다음 두 가지 방법으로 모듈에서 사용자 지정 함수를 사용할 수 있습니다.

(1) 모듈의 기능을 직접 사용 :

use FileLog
appendLog("mylog.txt", "test my log")

(2) 전체 경로를 통해 모듈의 함수를 호출합니다.

use FileLog
FileLog::appendLog("mylog.txt", "test my log")

4. 계획 모듈

DolphinDB는 네임 스페이스의 개념을 도입하고 모듈의 분류 및 계획을 지원합니다.

4.1 모듈 네임 스페이스 선언

모듈을 분류해야하는 경우 다단계 경로를 사용하여 모듈의 네임 스페이스를 계획 할 수 있습니다. 예를 들어, 두 개의 기존 모듈 인 FileLog 및 DateUtil이 있고 해당 저장 경로는 각각 modules / system / log / FileLog.dos 및 modules / system / temperal / DateUtil.dos입니다. 그러면이 두 모듈에 대한 해당 선언문은 다음과 같습니다. 다음과 같습니다.

  • modules / system / log / FileLog.dos
module system::log::FileLog
  • modules / system / temperal / DateUtil.dos
module system::temperal::DateUtil

4.2 네임 스페이스 모듈 호출

use키워드 뒤에 전체 경로를 추가하여 네임 스페이스 아래에 모듈을 가져올 있습니다. 예를 들어 FileLog 모듈을 가져옵니다.

use system::log::FileLog
//全路径调用
system::log::FileLog::appendLog("mylog.txt", "test my log")
//直接调用已导入模块中的函数
appendLog("mylog.txt", "test my log")

5. GUI의 원격 디버그 모듈

워킹 머신과 DolphinDB 서버가 같은 머신이 아닐 경우, 워킹 머신에서 편집 한 모듈 코드를 원격 서버의 DolphinDB로 직접 use가져올 수 없으며 모듈 파일은 [home] /의 해당 디렉토리에 업로드해야 합니다. 전달되기 전에 모듈 모듈을 use호출하십시오.

DolphinDB GUI는 0.99.2 버전부터 원격 동기화 모듈의 기능을 제공하고 있습니다. 구체적인 사용법은 아래 그림과 같습니다.

이 작업은 Modules 디렉터리에있는 모든 파일과 하위 디렉터리를 GUI에 연결된 DolphinDB 노드의 [home] / modules 디렉터리로 동기화합니다. 동기화가 완료된 후 use가져 오기 모듈을 직접 실행할 수 있습니다 .

6.주의 사항

6.1 동일한 이름을 가진 함수에 대한 정의 규칙

다른 모듈은 동일한 이름으로 함수를 정의 할 수 있습니다. 전체 경로를 사용하여 함수를 호출하면 DolphinDB는 모듈 네임 스페이스를 통해 함수 이름을 구분할 수 있습니다. 함수를 직접 호출하는 경우 :

  • 가져온 모듈 중 하나만 함수를 포함하는 경우 DolphinDB는 모듈의 함수를 호출합니다.
  • 가져온 모듈의 여러 모듈에이 함수가 포함 된 경우 DolphinDB는 스크립트를 구문 분석 할 때 다음 예외를 throw합니다.
Modules [Module1] and [Module2] contain function [functionName]. Please use module name to qualify the function.
  • 가져온 모듈의 이름이 사용자 정의 함수와 동일한 경우 시스템은 기본적으로 모듈의 함수를 사용합니다. 사용자 지정 함수를 호출하려면 네임 스페이스를 선언해야합니다. 사용자 정의 함수 및 내장 함수의 기본 네임 스페이스는 두 개의 콜론으로 표시되는 루트 디렉토리입니다. 예 :
//定义模块
module sys
def myfunc(){
 return 3
}

//自定义函数
login("admin","123456")
def myfunc(){
 return 1
}
addFunctionView(myfunc)

//调用
use sys
sys::myfunc() //调用模块的函数
myfunc() //调用模块的函数
::myfunc() //调用自定义函数
  • 가져온 모듈에 함수가 포함되어 있지 않으면 DolphinDB는 시스템 내장 함수에서 함수를 검색합니다. 내장 함수에 이러한 함수가 없으면 함수로 정의 된 예외가 발생합니다.

6.2 새로 고침 모듈 정의

개발 단계에서 모듈 코드를 디버깅 할 때 모듈 코드를 반복적으로 수정하고 정의를 새로 고쳐야하는 경우 모듈 파일에서 코드를 다시 실행하기 만하면됩니다.이 메서드는 현재 세션에서만 유효합니다.

6.3 모듈 간의 상호 호출

모듈은 한 방향으로 참조 할 수 있습니다. 예를 들어, 모듈 a는 모듈 b를, 모듈 b는 모듈 c를 참조합니다. 상호 참조는 지원되지 않습니다. 예를 들어, 모듈 a는 모듈 b를, 모듈 b는 모듈 a를 참조합니다.

추천

출처blog.csdn.net/qq_41996852/article/details/111308328