2017-01-21 2 views
0

하나의 배열과 다른 배열의 비교에 대한 힌트가 필요합니다. 배열의 한 요소가 다른 배열의 요소와 일치하면 puts 문으로 0을 반환하고, 그렇지 않으면 puts 문을 사용하여 0을 반환합니다. 인터넷에서 검색하려고하지만 유용한 정보를 찾을 수 없습니다.TCL ns2의 배열 비교

array set foodColor { 
    Apple red 
    Banana yellow 
    Lemon yellow 
    Carrot orange 
} 

array set citrusColor { 
     Lemon yellow 
     Orange orange 
     Lime green 
} 

# build up a list of non-citrus foods 
foreach k [array names citrusColor] { 
     if {![info exists foodColor($k)]} { 
       puts $k; 
     } 

} 

이 코드에서 출력은 다른 배열의 값과 일치하지 않는 값을 표시합니다. 하지만 배열에서 문자 또는 문자열 비교를 원하지 않는다면 일치하는 결과가 일치하지 않으면 다른 배열과 전체 배열 비교를 원한다.

+0

비교에 대한 자세한 내용을 입력하십시오. 예를 들어 샘플 출력을 추가하십시오. – x01saa

+0

citrusColor를 반복 할 때 확인 된 foodColor 항목을 나타내는 플래그를 설정해야합니다. 그런 다음 foodColor를 반복하면서 깃발이없는 항목을 확인합니다. –

답변

0

array set 다음의 구문은,

array set arrayName list

arrayName는 하나 개 이상의 요소의 값을 설정한다. 목록에는 요소의 짝수로 구성된 배열 get에 의해 반환 된 것과 같은 형태의 이 있어야합니다. list의 각 홀수 요소는 arrayName에있는 요소 이름으로 처리되며 list에있는 다음 요소는 해당 배열 요소에 대해 새 값으로 사용됩니다. 변수 arrayName에 이 이미 있고 목록이 비어 있으면 배열 이름이 빈 배열 값으로 만들어집니다.

당신은,

wrong # args: should be "array set arrayName list" 

코드는 같이 다시 쓸 수있는 다음과 같은 오류가 발생한다

array set food { 
    Apple red 
    Banana yellow 
    Lemon yellow 
    Carrot orange 
} 
array set citrus { 
     Lemon yellow 
     Orange orange 
     Lime green 
} 


foreach k [array names citrus] { 
    if {[info exists food($k)]} { 
     puts "The key '$k' is available in both arrays" 
    } 
} 

출력 :

The key 'Lemon' is available in both arrays 
0

이를 원하십니까?

if { [info exists citrusColor($key)] && 
    [info exists foodColor($key)] && 
    $citrusColor($key) eq $foodColor($key) 
} { 
    puts "Key $key is in both arrays with the same value" 
    return 0 
} else { 
    puts "Key $key is either missing or has a different value" 
    return 1 
}