나는 아래와 같은 테이블을 가지고 있으며이를 Tcl에서 코딩해야합니다. 나는 if-else 코드를 시도했지만 매우 길고 반복적 인 문장이되었다. 내가 그렇게 나는를 저장하는 모드 기능을 사용하고 표준 알려진 값에 대해 확인하고 그Tcl에서 If-Else 대신에 더 나은 대안
Table
Number Condition Width Height
2 True 1x 1y
3 True 1x 1y
4 True 1x 2y
5 True 2x 2y
6 True 2x 4y
7 True 3x 4y
2 False 0.2x 1y
3 False 0.2x 1y
4 False 0.2x 1y
5 False 0.2x 1y
6 False 0.2x 1y
7 False 0.2x 1y
기본적으로,이 폭과 높이가 같은 배열 또는 스위치 케이스 문 또는 무언가를 사용하여 구현하는 더 나은 대안 솔루션이 있습니까 값을 변수에 넣고 같은 조건을 적용합니다.
예 : 알려진 값이 100이고 1x = 10 및 1y = 20이라고 생각해 봅시다. 10과 20 모두 100으로 나눌 수 있으므로 mod 함수는 분명히 0을 반환합니다.
if {condition == true} {
if {(number ==2 || number ==3) && ($offset_x != 0)} {
puts "Error"
}
if {number ==4 && ($offset_x !=0 || $offset_2y != 0)} {
puts "Error"
}
..... complete till number ==7
} else {
if {(number ==2 || number ==3 || number ==4 ... number ==7) && (offset_0.2x !=0 || $offset_1y !=0)} {
puts "Error"
}
: 위 변경됩니다 따라서 나는 다음과 같은 코드 기술을 사용하고 표시된 테이블의 실제 생활에서
set knownvalue 100
set 1x 10
set 1y 20
set offset_x [expr ($knownvalue % $1x)]
$> 0 # (return 0)
set offset_y [expr ($knownvalue % $1y)]
$> 0 #(returns 0)`
# (Note as per chart for number 2, Height becomes 2y so that needs to be accounted for when calculating $offset_2y)
이 1 배 1 Y :
그래서,이 같은 것을 확인합니다
이 기능은 구현하기에 최적의 솔루션이 아니지만 작동합니다. 그래서, 더 나은 것을 제안하십시오.
미리 감사드립니다.
또한 믹스 앤 매치 할 수 것은에 따라하는 것은 당신을 위해 가장 좋습니다. –