다음 예제에서는 필드 선언에서 구조체의 각 필드에 값을 할당하는 것을 선호합니다. 또는 필드에 값을 할당하기 위해 각 필드에 대해 하나의 추가 명령문을 효과적으로 사용합니다. 내가 할 수 있기를 원하는 것은 struct가 인스턴스화 될 때 기본값을 할당하는 것입니다.Rust 구조체의 변수를 초기화하는 더 빠름/더 짧은 방법이 있습니까?
더 간결한 방법이 있습니까?
struct cParams {
iInsertMax: i64,
iUpdateMax: i64,
iDeleteMax: i64,
iInstanceMax: i64,
tFirstInstance: bool,
tCreateTables: bool,
tContinue: bool,
}
impl cParams {
fn new() -> cParams {
cParams {
iInsertMax: -1,
iUpdateMax: -1,
iDeleteMax: -1,
iInstanceMax: -1,
tFirstInstance: false,
tCreateTables: false,
tContinue: false,
}
}
}
덕분에, 나는 빠른 읽기했지만, 나는 더 잘 이해하기 위해 다시 읽어 것입니다 : 코드는 다음과 같이 할 수있는 제안 된 변경 있도록 기본
Option
값은None
입니다. 일부 언어가 사용하는 "자연스런"기본값 (예 : 0, 거짓, ""등)은 저에게 적합합니다. 나는 해결할 나의 작은 "문제"보다 더 광범위한 함의가 있음을 이해합니다. 예를 들면 능력. "iVal : i64 = 0"은 나의 더 넓은 요구를 해결할 것입니다.하지만 그렇게되지는 않을 것입니다. "# [파생 (기본값)]"은 내 목표 대부분을 해결해야합니다. 나는 왜 테스트 프로그램에서 -1을 사용했는지 확신 할 수는 없지만 (역사적으로) 필요하지는 않습니다. 필드가 정의 된 위치에서 값을 지정할 수 있으면 매우 유용합니다 (IMHO). –@BrianOh, 접두사로, "구조체 필드의 기본 값"(즉'struct Foo {val : i64 = 0}'과 같은 것)이 제안되었으며 이후 버전에서 나타날 수 있습니다. – huon
IMO가 구현 된 경우 좋을 것입니다. "struct foo {....". 내 질문에 작성된 구조체와 기본값을 사용하여 당신이 제안한대로 변경했습니다. 그것은 확실히 나에게 잘 어울리고 훨씬 더 간결합니다. 구문에 익숙하지 않은 나는 모든 기본 설정에 대한 구문을 알지 못했다. IE : "= cParams {iInsertMax : 10, ..Default :: default()};"를 사용했지만 "iInstanceMax"를 기본값으로 사용하고 싶습니다. IMO는 "# [deriving (Default)]"가 struct의 일부가되는 것이 바람직하지만 컴파일러가 더 적합하다고 생각합니다. –