小编Dar*_*usz的帖子

如何在声明tcl列表时使用变量的值

是否可以在tcl列表声明中使用变量?我有以下简单示例:

set grape_color "green"

set produce_list {\
   { PRODUCE COLOR             REGION  }\
   { APPLE   "red"             TX }\
   { GRAPE   $grape_color      CA }\
}

puts $produce_list
Run Code Online (Sandbox Code Playgroud)

代码的输出是这样的:

{ PRODUCE COLOR             REGION  } 
{ APPLE   "red"             TX }
{ GRAPE   $grape_color      CA }
Run Code Online (Sandbox Code Playgroud)

但我想要"绿色"而不是$grape_color列表.

tcl

1
推荐指数
1
解决办法
179
查看次数

将字符串转换为整数时出现 NumberFormatException

我想将字符串数组转换为整数。我写了这个,但是 eclipse 返回一个错误:

这是代码:

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new FileReader("array_list.csv"));
    String everything = "";
    try {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append('\n');
            line = br.readLine();
        }
        everything = sb.toString();
    } finally {
        br.close();
    }
    int firstArrLenght = everything.indexOf("]");
    int secondArrStartIndex = everything.lastIndexOf("[") + 1;
    int secondArrLenght = everything.lastIndexOf("]") - secondArrStartIndex;
    String[] firstStrArr = everything.substring(1, firstArrLenght).split(",");
    String[] secondStrArr = everything.substring(secondArrStartIndex, secondArrLenght).split(",");
Run Code Online (Sandbox Code Playgroud)

eclipse 不喜欢这些行。我想将这里的字符串数组转换为整数。然后我将使用其他逻辑的整数。 …

java

1
推荐指数
1
解决办法
8385
查看次数

双括号集合初始值设定项中的未定义构造函数错误

在以下代码中,该getEntriesNotWorking方法报告编译时错误:

public class DoubleBracketInitializerTest {

    class Container {}

    class Entry {
        Container container;
        public Entry(Container container) {
            this.container = container;
        }
    }

    class DetailedContainer extends Container {

        List<Entry> getEntriesNotWorking() {
            return new ArrayList<Entry>() {{
                add(new Entry(this)); // compile-time error mentioned below
            }};
        }

        List<Entry> getEntriesWorking() {
            return Arrays.asList(new Entry(this));
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

错误:

构造函数DoubleBracketInitializerTest.Entry(new ArrayList(){})未定义

虽然该getEntriesWorking()方法正确编译.构造函数显然在那里,因为它DetailedContailer是一个子类Contailer.

这两种方法有什么区别,使代码无效?如何使双括号初始化程序适用于此类层次结构?

java collections collection-initializer

1
推荐指数
1
解决办法
204
查看次数

分配负值时无符号变量的意外行为

这是一段代码:

unsigned short a=-1;
unsigned char b=-1;
char c=-1;
unsigned int x=-1;
printf("%d %d %d %d",a,b,c,x);
Run Code Online (Sandbox Code Playgroud)

为什么输出是这样的:

65535 255 -1 -1
Run Code Online (Sandbox Code Playgroud)

有人可以分析一下吗?

c printf unsigned signed output

1
推荐指数
1
解决办法
316
查看次数

将值按结构传递给另一个函数会将其初始化为零

我正在尝试创建一个线程库,我的线程是一个struct类型.必须遵循某个界面,并且我需要传递threadby值.例如:要加入一个线程,我的代码如下:

int thread_join(thread_t thread, void **status1)
{
    printf("Joining thread\n");
    long int thId = thread.id;
    printf("Thread id: %ld\n", thId);
    gtthread_t * thrd = getThreadFromID(thId);
    while(thrd->status != EXIT)
    {

    }   
    status1 = &(thrd->ret_value);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

而且我将一个struct类型传递给了thread_t这个函数.我的问题是当我在调用函数中看到线程的ID时,它正确显示但是当我在thread_join函数中检查它时显示为0.调用函数如下:

void* caller(void* arg)
{
    thread_t th;

    thread_create(&th, some_function, NULL);
    thread_join(th, NULL);

    while(1);
}
Run Code Online (Sandbox Code Playgroud)

线程创建将线程的ID初始化为非零值,并启动与其关联的功能.

我的线程结构(以及其他相关结构):

typedef enum
{
    RUNNING,
    WAITING,
    CANCEL,
    EXIT
} stat;

//Thread
typedef struct 
{
    ucontext_t t_ctxt;
    long int id;
    stat status; …
Run Code Online (Sandbox Code Playgroud)

c struct

1
推荐指数
1
解决办法
211
查看次数

复合如果检查为null,那么C中的其他条件总是安全的吗?

(这个问题是Is复合的精确副本,如果检查null,然后C++中的其他条件总是安全的?但是关于C,而不是C++.有人指出问题应该更具体).

我一直在使用以下类型的if条件.

char* ptr = ...;
if (ptr != NULL && ptr[0] != '\0') // <=== is this always safe?
{ /* ... */ }
Run Code Online (Sandbox Code Playgroud)

它依赖于ptr != NULL之前的检查ptr[0] !='\0'.

在所有标准,编译器和架构下都安全吗?或者是否有可能ptr[0] != '\0'在之前进行检查ptr != NULL

c if-statement operator-precedence

1
推荐指数
1
解决办法
810
查看次数

这里不允许'void'类型(java)错误

这是我的代码:

public void start()
{
  //If the gas tank and oil have more than nothing, and the transmission is in gear park, then the car can start
  if((gasTank.getGasLevel() > 0) && (engine.getOilLevel() > 0) && (transmission.gearPark()))
  {
    engine.startEngine();
    System.out.println("Engine is now on");
  }
  else
  {
    System.out.println("Please make sure your car is in proper gear, engine has oil and gas.");
  }
}
Run Code Online (Sandbox Code Playgroud)

我一直在收到'void' type not allowed here错误.我不是想要返回任何东西所以我知道我不需要int,Boolean,double等.

我究竟做错了什么?

java types void

0
推荐指数
1
解决办法
3730
查看次数

C++ 11赋值表达式是从右到左计算的吗?

表达式的评估顺序一直是C++中未指定行为的来源.C++ 11标准最终是否说明评估的顺序应该是什么?

我们现在知道以下表达式的值var1var2:

int var1 =10, var2=20;
var1 = var2 = 30;
Run Code Online (Sandbox Code Playgroud)

它会是var1=30 and var2=30,还是var1=20 and var2=30

c++ expression expression-evaluation c++11

0
推荐指数
2
解决办法
1101
查看次数