Как я конвертирую список tcl в список java в файле tcl - PullRequest
0 голосов
/ 06 августа 2020

Я могу преобразовать java список в список tcl, но не могу преобразовать список Tcl в java список .

sample.tcl: -

global mgr;
set mgr [java::new sample_impl]

proc sample {arg_list} {
    # what i need to do inside hear

    $::mgr sample_impl_in_java "java_list";  ## hear i call the java function that takes the java_list as a argument 
}

set var "hello"

sample {$var "world"}; ## pass a tcl list in sample function in tcl

sample_impl. java: -

 public void sample_impl_in_java(List listObj) {
     System.out.println(listObj);
 }

Кто-нибудь может помочь мне найти решение.

1 Ответ

0 голосов
/ 06 августа 2020
Тип списка

Tcl скорее похож на Java ArrayList, но API отличается и семантика модификации отличается. Преобразование одного в другой требует ручного шага:

proc sample {arg_list} {
    # Make an ArrayList
    set jlist [java::new java.util.ArrayList]

    # Copy the items over as strings; if you want a list of other things, this is the bit you change
    foreach item $arg_list {
        $jlist add [java::new String $item]
    }

    # Do the call
    $::mgr sample_impl_in_java $jlist
}

Вы, вероятно, захотите назвать это как-то вроде:

set var "hello"
sample [list $var "world"]

Другой способ будет работать, но результат маловероятен чего вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...