문제

말 있는 3 개체,글로벌 MemoryStore, 는 배열의 MemorySlabCache 체,그리고 각 MemorySlabCache 의 배열을 가지고 있습니다 MemorySlab 체입니다. 종류의 다음과 같다:

class MemoryStore {
  caches: Array<MemorySlabCache> = []
}

class MemorySlabCache {
  size: Integer
  slabs: Array<MemorySlab> = []
}

class MemorySlab {
  
}

하지만,이를 캡처하지 않습니다.그것은 또한 필요를 캡처하는 각기 MemorySlabCache 는 크기,사용되는 것을 말하는 크기 MemorySlab 체는 이 포함되어 있습니다.그 more 다음과 같다:

class MemoryStore {
  caches: Array<MemorySlabCache> = []
}

class MemorySlabCache {
  size: Integer
  slabs: Array<MemorySlab<size>> = []
}

class MemorySlab<size: Integer> {
  
}

그런 다음 우리는 우리에 캐시:

let 4bytes = new MemorySlabCache(size: 4)
let 8bytes = new MemorySlabCache(size: 8)
...
let 32bytes = new MemorySlabCache(size: 32)
...
store.caches.push(4bytes, 8bytes, ..., 32bytes, ...)

이것을 계산적으로"따라 형식", "유형의 정의에 따라 값을"?부터의 유형 Array<MemorySlab<size>> 에 따라 값을 할당 size 필드 MemorySlabCache.하지 않을 경우,이것이 무엇입니까?는 것이 무엇으로 만들의 예 종류?

도움이 되었습니까?

해결책

그래서 대답은 틀림없이"예"이 예제 따라 형식입니다.그러나 문제의 많은 간단한 예제는 사람들을 위해 만들이지 않는 것을 입증이 아닌 사소한의 측면을 따라 입력하면 됩니다.

틀림없이 당신은 더 나은에 이 존중하기 때문에,유형에 질문에 따라 임의의 값 MemorySlabCache.그러나,당신은 결코 사용 MemorySlabCache 없이 정적으로 알려진 값입니다.그래서 더 많은 흥미로운 예제처럼 될 것이다:

let cacheSize = readInteger(stdin)
store.caches.push(new MemorySlabCache(cacheSize))

그래서,당신은 허용할 사용자가 선택하는 캐쉬 크기에 런타임,그러나 캐시기전에 기록된 유형,형식 검사는 정적으로 모든 작업을 의미와 관련하여 크기도 크기지 않을 정적으로 알려져(종류의 또 다른 문제로 예;에 아무것도하는 방법을 보여줍 추적 크기는 중요 그 후에).

좀 더 사소한 문제는 정수는 너무 쉬운 구조'가짜'의존하는 유형을 위해,그래서 예으로 그들을 끝까지 밑에 판매하는 무엇이 있는지 가능한 진정한 따라 형식입니다.예를 들어,메 어떤 확장자를 인코딩할 수 있습니다 심지어 비슷한 내 runtime-cache-size 예,그렇지 않은 경우에도 정말 따라 형식입니다.할 수 있는 정적으로 알려진 유형-수준의 정수,그리고 생성 기능을 제공하는 당시에 대한 적절한 값을 정적으로 입력 값을 기반으로 런타임의 정수입니다.그러나,언어를 기반으로 의존하는 모형 이론을 일반적으로 하자 유형에 따라 달라 집 값은 임의의 유형이 같은 기능을 유형입니다.이러한(및 다른 관련 기능),'가짜'정말 가능합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top