小编Chr*_*Vig的帖子

无法在Eclipse中禁用方法括号自动完成

我试图在Eclipse中禁用括号的自动关闭,虽然我已经成功了,但我无法阻止编辑器为方法调用插入一个右括号.结果是当我输入时:

myBool.equals(true);
Run Code Online (Sandbox Code Playgroud)

我输入左括号后立即插入一个右括号,我实际得到的是:

myBool.equals(true);)
Run Code Online (Sandbox Code Playgroud)

我已经在首选项 - > Java - >编辑器 - >键入菜单中禁用了所有自动完成选项,以及首选项 - > Java - >编辑器 - >内容辅助 - >填充方法参数并显示猜测参数.我还禁用了"编辑"菜单下的智能插入模式选项.是否有其他选项我需要用来阻止Eclipse这样做?

如果重要,则使用Eclipse 3.5.2(Build ID M20100211-1343).

编辑添加:我还应该提到,只有在我输入"intellisense"弹出窗口后才会出现这种情况,并在我输入句点后出现建议的方法名称.如果我只是连续输入代码而不等待显示建议框,则不会插入右括号.

eclipse autocomplete code-completion

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

使用非类型模板参数而不是常规参数的原因?

在C++中,您可以使用非类型模板参数创建模板,如下所示:

template< int I >
void add( int& value )
{
  value += I;
}

int main( int argc, char** argv )
{
  int i = 10;
  add< 5 >( i );
  std::cout << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

其中打印"15"到cout.有什么用?是否有任何理由使用非类型模板参数而不是更常规的类似参数:

void add( int& value, int amount )
{
  value += amount;
}
Run Code Online (Sandbox Code Playgroud)

对不起,如果已经被问过(我看了但找不到任何东西).

c++ templates

24
推荐指数
4
解决办法
5321
查看次数

在Xcode 8中将单个文件转换为Swift 3?

有没有以任何方式Xcode 88.1Swift 2.X -> Swift 3迁移的单个文件中的一个项目,包括已经转换为斯威夫特3?

对于技术债务/遗留构建流程的原因,我们目前不得不维护项目的两个版本Xcode 7Xcode 8版本.当我们必须将新的开发合并到Xcode 7以上时,这会引起麻烦Xcode 8.由于该项目已经完全转换到Swift 3我们的Xcode 8分支机构(包括大量的手动修复),我们无法使用全项目自动化转换器.因此,我们目前必须从做手转换Swift 2.2Swift 3任何新的Swift这是在添加的文件Xcode 7,这需要时间显著量.

如果已经提出这个问题,我很抱歉,我找不到谷歌的任何明确答案.

xcode swift swift3 xcode8

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

4294967087作为Racket(随机)函数的参数限制有什么意义?

使用随机函数在Racket中生成随机整数时,Racket要求参数为1和之间的数字4294967087.我只是想知道,4294967087号码来自哪里,为什么它是Racket可以生成的最大随机数?

它与无符号32位整数(4294967295)的最大值接近但不完全相等.我认为必须有一些理由选择这样一个特定的数字?

racket

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

将Python标准输入/输出重定向到C#表单应用程序

我道歉,如果这是一个重复的问题,我搜索了一下,找不到任何类似的东西 - 我有一个Python库,通过套接字连接到我的C#应用​​程序,以允许简单的Python脚本(IronPython不是一个选项权利现在有几个原因).我想创建一个Windows Forms控件,它基本上是Python解释器的图形前端,这样用户就可以运行解释器而无需打开单独的控制台窗口.

我附上了一个简单的演示,说明了我到目前为止所尝试的内容,但是我无法让它工作.永远不会调用DataReceived事件处理程序,当我尝试写入标准输入时,解释器中没有任何操作.有没有人对我做错了什么有反馈,或者这是否可能?

public partial class Form1 : Form
{

    Process _pythonProc;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        ProcessStartInfo psi = new ProcessStartInfo()
        {
            FileName = @"C:\Python26\Python.exe",
            CreateNoWindow = true,
            UseShellExecute = false,
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            RedirectStandardError = true
        };
        _pythonProc = new Process();
        _pythonProc.OutputDataReceived += OutputDataReceived;
        _pythonProc.ErrorDataReceived += ErrorDataReceived;
        _pythonProc.StartInfo = psi;
        _pythonProc.Start();
    }

    private void cmdExecute_Click(object sender, EventArgs e)
    {
        string cmd = textInput.Text;
        _pythonProc.StandardInput.WriteLine(cmd);
        _pythonProc.StandardInput.Flush();
        textInput.Text …
Run Code Online (Sandbox Code Playgroud)

c# python redirect stdin stdout

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

Linux - 为什么每次运行程序时程序断点指针(brk/sbrk)都不同?

我知道程序中断是Linux操作系统为进程分配的最高虚拟内存地址,因此标记了堆的最高地址.您可以通过调用sbrk(0)来获取程序中断的地址.

当我创建以下简单程序时,每次运行时都会得到不同的结果:

#define _BSD_SOURCE
#include <stdio.h>
#include <unistd.h>

int main()
{
    printf( "system break: %p\n", sbrk( 0 ) );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

例如,在我的电脑上:

$ ./sbrk
system break: 0x81fc000
$ ./sbrk
system break: 0x9bce000
$ ./sbrk
system break: 0x97a6000
Run Code Online (Sandbox Code Playgroud)

我的理解是堆直接分配在虚拟内存中的BSS部分之上 - 我想我期望它总是具有相同的初始值,就像这样一个简单的程序.是否存在一些随机化或程序中断最初定位的东西?如果没有,为什么每次运行程序时它都不同?

c linux gcc sbrk

4
推荐指数
2
解决办法
1900
查看次数

C++ lambda词法闭包局部变量

摘要

在C++中,当我从一个函数返回一个lambda时,该函数捕获了该函数的局部变量,具体发生了什么,为什么?编译器(g ++)似乎允许它,但它给了我不同于我期望的结果,所以我不确定这是否在技术上是安全/支持的.

细节

在某些语言(Swift,Lisp等)中,你可以在闭包/ lambda中捕获局部变量,只要闭包在范围内,它们就会保持有效并且在范围内(我听说它叫做"lambda over over lambda") "在Lisp语境中).例如,在Swift中,我正在尝试做的示例代码是:

func counter(initial: Int) -> (() -> Int) {
    var count = initial
    return { count += 1; return count }
}

let c = counter(initial: 0)
c() // returns 1
c() // returns 2
c() // returns 3
Run Code Online (Sandbox Code Playgroud)

我尝试编写与此类似的C++,如下所示:

auto counter(int initial)
{
    int count = initial;
    return [&count] () -> int {
        count = count + 1;
        return count;
    };
}
Run Code Online (Sandbox Code Playgroud)

但是,我得到的结果是:

auto c = counter(0);
std::cout << c() …
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

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

如何从通用lambda中的variadic参数包中获取类型?

我正在尝试编写一个函数,该函数将返回带有可变参数的泛型lambda,其中lambda检查其中一个参数是否等于特定值.这是(大致)我正在尝试做的事情:

template <int Index, typename TValue>
inline auto arg_eq(const TValue& value) 
{
    return [value] (auto... args) -> bool {
        return (std::get<Index>(std::tuple</* ??? */>(args...)) == value);
    };
}
Run Code Online (Sandbox Code Playgroud)

我不确定在std::tuple</* ??? */>模板参数中放什么.我试过decltype(args),decltype(args...),auto,auto...,和其他一些东西,但我不断收到编译器错误.这甚至可能吗?

非通用的等价物将是这样的:

template <int Index, typename TValue, typename... TArgs>
inline auto arg_eq(const TValue& value)
{
    return [value] (TArgs... args) -> bool {
        return (std::get<Index>(std::tuple<TArgs...>(args...)) == value);
    };
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但返回的lambda不是通用的 - 它不适用于任何任意参数包.

c++ lambda variadic-templates generic-lambda c++14

4
推荐指数
2
解决办法
637
查看次数

C++中的基类中的"virtual"关键字是可选的吗?

我试图理解C++中"virtual"关键字的功能 - 考虑这个例子:

#ifdef USE_VIRTUAL
struct a {
  virtual void say_hi() { std::cout << "hello from a" << std::endl; }
};
#else
struct a {
  void say_hi() { std::cout << "hello from a" << std::endl; }
};
#endif

struct b : public a {
  void say_hi() { std::cout << "hello from b" << std::endl; }
};

int main( int argc, char** argc )
{
  a a_obj;
  b b_obj;
  a_obj.say_hi();
  b_obj.say_hi();
}
Run Code Online (Sandbox Code Playgroud)

该计划输出:

hello from a
hello from b
Run Code Online (Sandbox Code Playgroud)

无论:: say_hi是否被声明为虚拟.由于即使say_hi未声明为虚拟,函数也会被正确覆盖,那么将其声明为虚拟的功能是什么?

c++ virtual keyword

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

Racket - 函数参数的契约是否可以依赖于另一个参数的值?

假设我有一个功能:

(define (func x y)
    ...)
Run Code Online (Sandbox Code Playgroud)

我想约束这些论点,以便:

  • x是正整数
  • y是小于或等于x的正整数

第一个约束显然是微不足道的,但有没有办法用Racket的合同系统设置第二个约束?

contract racket

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