한 프로 시저의 출력을 tcl의 다른 프로 시저에 인수로 전달하는 방법

프라 작타 조시

다른 프로 시저에 대한 인수로 목록 인 한 프로 시저의 출력을 전달하고 싶습니다. 다음은 시도한 코드입니다.

proc distance {n1 n2 nd1 nd2} {
    set x1 [expr int([$n1 set X_])]
    set y1 [expr int([$n1 set Y_])]
    set x2 [expr int([$n2 set X_])]
    set y2 [expr int([$n2 set Y_])]

    set d [expr hypot($x2-$x1,$y2-$y1)]

    return [list $nd1 $nd2 $x1 $y1 $x2 $y2 $d]
}


proc processDistances {count threshold {filter ""}} {

 global node_


    set distances {}
    for {set i 1} {$i < $count} {incr i} {
        for {set j 1} {$j < $count} {incr j} {
            # Skip self comparisons
            if {$i == $j} continue

            # Apply target filter
            if {$filter ne "" && $j != $filter} continue

            # Get the distance information
            set thisDistance [distance $node_($i) $node_($j) $i $j]

            # Check that the nodes are close enough
            if {[lindex $thisDistance 6] < $threshold} {
                lappend distances $thisDistance
            }
        }
    }

    # Sort the pairs, by distances

    set distances [lsort -real -increasing -index 6 $distances]

Inverse2 {*}$distances
}
$ns at 8.5 [list processDistances $val(nn) 200 41]

proc Inverse2 {m} {

set result [open R.tr w]

lassign [lindex $m 0 2] x1 
lassign [lindex $m 0 3] y1 
lassign [lindex $m 0 4] d1
lassign [lindex $m 1 2] x2  
lassign [lindex $m 1 3] y2  
lassign [lindex $m 1 4] d2  
lassign [lindex $m 2 2] x3
lassign [lindex $m 2 3] y3  
lassign [lindex $m 2 4] d3   

set mt {{? ?} {? ?}}
lset mt 0 0 [expr 2*($x1-$x2)]
lset mt 0 1 [expr 2*($y1-$y2)]
lset mt 1 0 [expr 2*($x1-$x3)]
lset mt 1 1 [expr 2*($y1-$y3)]
set const {{?} {?}}
lset const 0 [expr {(pow($x1,2)+pow($y1,2)-pow($d1,2))-(pow($x2,2)+pow($y2,2)-pow($d2,2))}]
lset const 1 [expr {(pow($x1,2)+pow($y1,2)-pow($d1,2))-(pow($x3,2)+pow($y3,2)-pow($d3,2))}]

set x [expr {double([lindex [Inverse3 $mt] 0 0]  * [lindex $const 0]
                   + [lindex [Inverse3 $mt] 0 1] * [lindex $const 1])}]
set y [expr {double([lindex [Inverse3 $mt] 1 0]  * [lindex $const 0]
                   + [lindex [Inverse3 $mt] 1 1] * [lindex $const 1])}]

puts $result "x location of object is: $x \ny location of object is: $y"

 }

오류:

ns: processDistances 42 200 41: wrong # args: should be "Inverse2 m"
    while executing
"Inverse2 {*} $distances"
    (procedure "processDistances" line 32)
    invoked from within
"processDistances 42 200 41"

나는의 출력을 얻고 proc processDistances정렬 된 목록 인 성공적하지만이 출력을 통과 할 때 procedure Inverse2명령을 사용하여 Inverse2 {*}$distances작성을 processDistances나는 동 도움이 날 wrong.please 해요 사자 아이 error.Where 위에 점점 (나는 tcl8.5있다).

론 노리스

내가 교체 한대로 실행하는 것이 좋습니다. 이것이 작동하지 않으면 무엇을 요구 하시는지 잘 모르겠습니다.

proc distance {n1 n2 nd1 nd2} {
    set x1 [expr int([$n1 set X_])]
    set y1 [expr int([$n1 set Y_])]
    set x2 [expr int([$n2 set X_])]
    set y2 [expr int([$n2 set Y_])]

    set d [expr hypot($x2-$x1,$y2-$y1)]

    return [list $nd1 $nd2 $x1 $y1 $x2 $y2 $d]
}


proc processDistances {count threshold {filter ""}} {

 global node_


    set distances {}
    for {set i 1} {$i < $count} {incr i} {
        for {set j 1} {$j < $count} {incr j} {
            # Skip self comparisons
            if {$i == $j} continue

            # Apply target filter
            if {$filter ne "" && $j != $filter} continue

            # Get the distance information
            set thisDistance [distance $node_($i) $node_($j) $i $j]

            # Check that the nodes are close enough
            if {[lindex $thisDistance 6] < $threshold} {
                lappend distances $thisDistance
            }
        }
    }

    # Sort the pairs, by distances

    set distances [lsort -real -increasing -index 6 $distances]

#Inverse2 {*}$distances
Inverse2 $distances
}
$ns at 8.5 [list processDistances $val(nn) 200 41]

proc Inverse2 {m} {

set result [open R.tr w]

lassign [lindex $m 0 2] x1 
lassign [lindex $m 0 3] y1 
lassign [lindex $m 0 4] d1
lassign [lindex $m 1 2] x2  
lassign [lindex $m 1 3] y2  
lassign [lindex $m 1 4] d2  
lassign [lindex $m 2 2] x3
lassign [lindex $m 2 3] y3  
lassign [lindex $m 2 4] d3   

set mt {{? ?} {? ?}}
lset mt 0 0 [expr 2*($x1-$x2)]
lset mt 0 1 [expr 2*($y1-$y2)]
lset mt 1 0 [expr 2*($x1-$x3)]
lset mt 1 1 [expr 2*($y1-$y3)]
set const {{?} {?}}
lset const 0 [expr {(pow($x1,2)+pow($y1,2)-pow($d1,2))-(pow($x2,2)+pow($y2,2)-pow($d2,2))}]
lset const 1 [expr {(pow($x1,2)+pow($y1,2)-pow($d1,2))-(pow($x3,2)+pow($y3,2)-pow($d3,2))}]

set x [expr {double([lindex [Inverse3 $mt] 0 0]  * [lindex $const 0]
                   + [lindex [Inverse3 $mt] 0 1] * [lindex $const 1])}]
set y [expr {double([lindex [Inverse3 $mt] 1 0]  * [lindex $const 0]
                   + [lindex [Inverse3 $mt] 1 1] * [lindex $const 1])}]

puts $result "x location of object is: $x \ny location of object is: $y"

 }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Pomelo ORM을 사용하여 .net 코어에 대한 MySQL 저장 프로 시저의 출력 매개 변수를 전달하는 방법

분류에서Dev

다른 프로 시저의 변수에 대한 Tcl upvar

분류에서Dev

눈송이의 다른 프로 시저 내에서 프로 시저를 호출하는 방법

분류에서Dev

SQL의 저장 프로 시저에 null 값을 전달하는 방법

분류에서Dev

Pl sql 2 개의 개별 변수에 다른 프로 시저에서 2 개의 출력 값을 저장하는 방법

분류에서Dev

db2의 다른 프로 시저에서 호출하는 스토어드 프로 시저의 트랜잭션을 롤백하는 방법

분류에서Dev

postgresql의 한 파일에서 다른 파일로 저장 프로 시저 호출

분류에서Dev

다양한 크기의 for 루프 출력을 인덱스로 초기화 된 벡터에 저장하는 방법

분류에서Dev

다른 프로 시저에서 프로 시저의 RaiseError 메시지를 얻는 방법

분류에서Dev

mysql 저장 프로 시저에서 전달 된 날짜의 데이터를 제한하는 방법

분류에서Dev

한 에코의 출력을 다른 에코의 입력으로 전달하는 방법은 무엇입니까?

분류에서Dev

저장 프로 시저의 출력 변수에 쿼리 값을 설정하는 방법

분류에서Dev

목록 개체의 속성을 추출하고 저장 프로 시저로 전달하는 방법

분류에서Dev

사용자 정의 형식의 배열을 저장 프로 시저에 전달하는 방법

분류에서Dev

SSIS를 통해 하나의 저장 프로 시저에서 여러 파일을 출력하는 방법

분류에서Dev

Sybase의 저장 프로 시저에서 XML 출력 파일을 생성하는 방법은 무엇입니까?

분류에서Dev

Sybase의 저장 프로 시저에서 XML 출력 파일을 생성하는 방법은 무엇입니까?

분류에서Dev

저장된 프로 시저의 XML 변수를 SQL 서버의 다른 저장된 프로 시저로 전달

분류에서Dev

Terraform : Azure에서 한 모듈의 출력 값을 다른 모듈로 전달하는 방법

분류에서Dev

다중 스레딩을 사용하여 컬렉션의 각 항목에 대한 저장 프로 시저를 호출하는 방법

분류에서Dev

저장 프로 시저를 실행하는 다른 방법의 오류

분류에서Dev

저장 프로시 저는 SQL Server의 저장 프로 시저 자체에서 값을 가져옵니다.

분류에서Dev

테이블의 각 열 값을 저장 프로 시저로 전달하고 결과를 SQL-Server의 테이블에 저장하는 방법

분류에서Dev

C #의 저장 프로 시저에서 출력 매개 변수를 사용하는 방법

분류에서Dev

Oracle의 저장 프로 시저에서 출력 매개 변수를 검색하는 방법

분류에서Dev

다른 프로 시저와 함께 저장 프로 시저의 임시 테이블에 데이터를 삽입하는 방법은 무엇입니까?

분류에서Dev

다른 프로 시저 내의 프로 시저 호출에서 일관되지 않은 출력

분류에서Dev

저장 프로 시저에 대한 입력으로서의 Refcusor

분류에서Dev

Java의 프로 시저에서 값을 얻는 방법

Related 관련 기사

  1. 1

    Pomelo ORM을 사용하여 .net 코어에 대한 MySQL 저장 프로 시저의 출력 매개 변수를 전달하는 방법

  2. 2

    다른 프로 시저의 변수에 대한 Tcl upvar

  3. 3

    눈송이의 다른 프로 시저 내에서 프로 시저를 호출하는 방법

  4. 4

    SQL의 저장 프로 시저에 null 값을 전달하는 방법

  5. 5

    Pl sql 2 개의 개별 변수에 다른 프로 시저에서 2 개의 출력 값을 저장하는 방법

  6. 6

    db2의 다른 프로 시저에서 호출하는 스토어드 프로 시저의 트랜잭션을 롤백하는 방법

  7. 7

    postgresql의 한 파일에서 다른 파일로 저장 프로 시저 호출

  8. 8

    다양한 크기의 for 루프 출력을 인덱스로 초기화 된 벡터에 저장하는 방법

  9. 9

    다른 프로 시저에서 프로 시저의 RaiseError 메시지를 얻는 방법

  10. 10

    mysql 저장 프로 시저에서 전달 된 날짜의 데이터를 제한하는 방법

  11. 11

    한 에코의 출력을 다른 에코의 입력으로 전달하는 방법은 무엇입니까?

  12. 12

    저장 프로 시저의 출력 변수에 쿼리 값을 설정하는 방법

  13. 13

    목록 개체의 속성을 추출하고 저장 프로 시저로 전달하는 방법

  14. 14

    사용자 정의 형식의 배열을 저장 프로 시저에 전달하는 방법

  15. 15

    SSIS를 통해 하나의 저장 프로 시저에서 여러 파일을 출력하는 방법

  16. 16

    Sybase의 저장 프로 시저에서 XML 출력 파일을 생성하는 방법은 무엇입니까?

  17. 17

    Sybase의 저장 프로 시저에서 XML 출력 파일을 생성하는 방법은 무엇입니까?

  18. 18

    저장된 프로 시저의 XML 변수를 SQL 서버의 다른 저장된 프로 시저로 전달

  19. 19

    Terraform : Azure에서 한 모듈의 출력 값을 다른 모듈로 전달하는 방법

  20. 20

    다중 스레딩을 사용하여 컬렉션의 각 항목에 대한 저장 프로 시저를 호출하는 방법

  21. 21

    저장 프로 시저를 실행하는 다른 방법의 오류

  22. 22

    저장 프로시 저는 SQL Server의 저장 프로 시저 자체에서 값을 가져옵니다.

  23. 23

    테이블의 각 열 값을 저장 프로 시저로 전달하고 결과를 SQL-Server의 테이블에 저장하는 방법

  24. 24

    C #의 저장 프로 시저에서 출력 매개 변수를 사용하는 방법

  25. 25

    Oracle의 저장 프로 시저에서 출력 매개 변수를 검색하는 방법

  26. 26

    다른 프로 시저와 함께 저장 프로 시저의 임시 테이블에 데이터를 삽입하는 방법은 무엇입니까?

  27. 27

    다른 프로 시저 내의 프로 시저 호출에서 일관되지 않은 출력

  28. 28

    저장 프로 시저에 대한 입력으로서의 Refcusor

  29. 29

    Java의 프로 시저에서 값을 얻는 방법

뜨겁다태그

보관