小编Sam*_*mer的帖子

Ruby中的常量分配错误?

我们在Ruby中发现了一些奇怪的代码,我想知道是否有人可以解释它:

$ irb
irb(main):001:0> APPLE = 'aaa'
=> "aaa"
irb(main):002:0> banana = APPLE
=> "aaa"
irb(main):003:0> banana << 'bbb'
=> "aaabbb"
irb(main):004:0> banana
=> "aaabbb"
irb(main):005:0> APPLE
=> "aaabbb"
Run Code Online (Sandbox Code Playgroud)

抓住那个?常量被附加到局部变量的同时.

已知行为?预期?

ruby

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

Lua - 简单的迭代器赋值?

我是Lua的新手所以请忍受这个简单的问题:)

我只是试图迭代一个表,并修改它的值.但是,似乎我无法直接修改"价值"部分?

码:

for id,value in pairs(some_table) do
    value = value * some_math_here
end
Run Code Online (Sandbox Code Playgroud)

我真的需要修改some_table [id],还是有更优雅的方式?

lua iterator

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

Qt/C++:在Windows操作系统下运行程序时图标不显示

我使用的是QT 4.7.0.我在Windows中创建了一个项目.我在按钮上使用了一些图标,但是当我将.exe文件移动到另一台Windows机器时,图标不显示.如果我在开发机器上运行该程序,则会出现图标.

我创建了一个qrc文件并添加了图标.

windows qt

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

使用Qstring :: toDouble检查数据

我正在尝试使用该QString::toDouble()功能验证用户输入.该文件说,函数应该这样使用:

double QString::toDouble ( bool * ok = 0 ) const;
/* 
   Returns the string converted to a double value.
   Returns 0.0 if the conversion fails.
   If a conversion error occurs, *ok is set to false; otherwise *ok is set to true.
*/
Run Code Online (Sandbox Code Playgroud)

所以我试图使用它*ok来抛出错误消息,如果它的错误,目的是只允许用户输入有效的整数或小数.问题是即使输入单词,消息也始终返回有效.到目前为止,这是我的代码:

void MainWindow::checkData()
{        
    bool validate;
    QString tempStr;
    tempStr = ui->lineEditValidate->text();
    double converted = tempStr.toDouble(&validate);
    if (validate = false)
    {
        QErrorMessage validateError;
        validateError.showMessage("Input is Invalid");
        validateError.exec();
    }
    else
    {
        QErrorMessage worksFine; …
Run Code Online (Sandbox Code Playgroud)

validation double user-interface qstring qt

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

GLEW构建失败

我需要在Ubuntu 11.10中加载扩展.我尝试构建GLEW但是我得到以下奇怪的错误......

~/Downloads/glew-1.7.0$ make 
cc -shared -Wl,-soname=libGLEW.so.1.7 -o lib/libGLEW.so.1.7.0 src/glew.pic_o -L/usr/X11R6/lib64 -lXmu -lXi -lGLU -lGL -lXext -lX11 
/usr/bin/ld: cannot find -lXmu 
/usr/bin/ld: cannot find -lXi 
collect2: ld returned 1 exit status 
make: *** [lib/libGLEW.so.1.7.0] Error 1 
Run Code Online (Sandbox Code Playgroud)

这是我发现的建议(因此尝试没有成功):

sudo apt-get install --reinstall mesa-common-dev

sudo apt-get install --reinstall libx11-dev
Run Code Online (Sandbox Code Playgroud)

我还看到某个地方只是简单地把一个#define GL_GLEXT_EXTENSIONS放在文件的顶部,这也不起作用.

如果有人能告诉我如何解决这个奇怪的错误,那么我可以构建GLEW和/或向我展示如何在Linux中手动加载OpenGL扩展(我只看到如何在Windows中执行它的代码......)这将是伟大的!

opengl ubuntu glew makefile xlib

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

_Exit()和_exit()有什么区别?

为了回答这个问题,一些人说使用_Exit(),而其他人说使用_exit()。有人可以解释两者之间的区别(如果有)以及两者的起源吗?

c++

3
推荐指数
2
解决办法
1921
查看次数

如何在写入到流的数字中添加填充零?

我正在尝试将数值写入与列对齐的文本文件中.我的代码看起来像这样:

ofstream file;
file.open("try.txt", ios::app);
file << num << "\t" << max << "\t" << mean << "\t << a << "\n";
Run Code Online (Sandbox Code Playgroud)

它有效,除非值没有相同的数字,否则它们不对齐.我想要的是以下内容:

1.234567  ->  1.234
1.234     ->  1.234
1.2       ->  1.200
Run Code Online (Sandbox Code Playgroud)

c++ padding ofstream

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

如何从QProcess获取错误代码?

我有一个函数A(),我执行其他八个'子函数',其中包括一个QProcess.如何从所有QProcesses获取返回代码?

例:

void Mainclass::A()
{
    B();
    C();
    // ...
    I();
}

void Mainclass::B() 
{
    QString CommandPath = "PathB";
    QProcess *Process = new QProcess(this);

    Process->setWorkingDirectory(MainDir);
    Process->setStandardOutputFile(MainDir + "/geometries");
    Process->start(CommandPath);
    Process->waitForFinished();
    QProcess::ExitStatus Status = Process->exitStatus(); 

    if (Status == 0)
    {
       std::cout << "App executed!" << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现了这个例子,但是我不了解如何自己实现它,因为我在我的应用程序中使用指针对象.

c++ qt qprocess qt-creator

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

QObject :: tr()的复数重载是否将%n转换为本地数字?

QObject::tr()我一直用于翻译包含数字的字符串的函数有两种形式:

tr("There are %n foo(s)", 0, foo.size());
tr("%1: %2").arg(QLocale().toString(bar.size())).arg(bar.name());
Run Code Online (Sandbox Code Playgroud)

除了您希望在同一个字符串中进行本地化多元化之外,这些会占用您希望字符串中的数字的大多数情况.当然你可以打破翻译,但是你必须猜测这个字符串是否会在所有语言的相同位置中断(我决定大部分时间没有资格做出决定).

QLocale文档指出...

当格式字符串中的位置说明符包含"L"时,QString :: arg()使用默认语言环境格式化数字,例如"%L1"

......所以第二种形式可以改写为......

tr("%L1: %2").arg(bar.size()).arg(bar.name());
Run Code Online (Sandbox Code Playgroud)

......这表明你可以将第一个表格重写为......

tr("There are %Ln foo(s)", 0, foo.size());
Run Code Online (Sandbox Code Playgroud)

这将编译并在Linguist中显示为多元化,但有人知道这是否也将本地化数字?我在任何文档中都找不到任何说法.

qt translation localization pluralize

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

Qt - 将qreal转换为double

我正在使用Ubuntu 11.10,Qt 4,Qwt 6.0.1

问题是,一般来说一切正常,Qwt编译的例子没有任何问题,但是当我尝试从QPointF.x转换为double时,我得到了错误.有趣的是(在x86上)qreal应该重新定义double ...

这是不起作用的(

QPointF pt;
pt.setX(1.0);
pt.setY(2.0);
double px=pt.x;
Run Code Online (Sandbox Code Playgroud)

编译器返回错误:

error: argument of type ‘qreal (QPointF::)()const {aka double (QPointF::)()const}’ does not match ‘double’
Run Code Online (Sandbox Code Playgroud)

我做了些蠢事吗?

简而言之:

我需要将它转换为在继承自QwtSeriesData的类中使用,以在点之间进行自定义插值(在这种情况下,它不会是简单的线性插值).为此,我需要方法

double y(double x) const
Run Code Online (Sandbox Code Playgroud)

这将返回给定x的函数值

当我简化它以使用QwtSeriesData时,它编译.为了实现这一目标,只需要实施

QPointF sample(size_t i) const
size_t size() const
Run Code Online (Sandbox Code Playgroud)

但正如我所说,我需要自定义插值,所以似乎实现从QwtSyntheticPointData继承的接口是最好的选择.

c++ double qt

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