小编goe*_*tor的帖子

Erlang shell漂亮的打印深度

erlang shell会截断长项,例如:

6> lists:seq(1,1000).
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
 23,24,25,26,27,28,29|...]
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?或者至少在截断术语之前增加深度.我知道我可以做点什么......

io:format("~p~n",[lists:seq(1,1000)]).
Run Code Online (Sandbox Code Playgroud)

...但我更喜欢配置shell来做我想要的.

shell erlang

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

使用泛型类型时如何使用浮点数文字?

常规浮点文字不起作用:

extern crate num_traits;

use num_traits::float::Float;

fn scale_float<T: Float>(x: T) -> T {
    x * 0.54
}

fn main() {
    let a: f64 = scale_float(1.23);
}
Run Code Online (Sandbox Code Playgroud)
extern crate num_traits;

use num_traits::float::Float;

fn scale_float<T: Float>(x: T) -> T {
    x * 0.54
}

fn main() {
    let a: f64 = scale_float(1.23);
}
Run Code Online (Sandbox Code Playgroud)

floating-point literals traits rust

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

如何获取当前类对象的引用?

在Python中,如何在类语句中获取对当前类对象的引用?例子:

def setup_class_members(cls, 前缀):
    setattr(cls, 前缀+"_var1", "你好")
    setattr(cls, 前缀+"_var2", "再见")

类 myclass(对象):
    setup_class_members(cls, "coffee") # 如何获取“cls”?

    def mytest(自我):
        打印(self.coffee_var1)
        打印(self.coffee_var2)

x = myclass()
x.mytest()

>>> 你好
>>> 再见


我已经注销的替代方案是:

  1. 使用locals():这在类语句中给出了一个可以写入的字典。这似乎适用于类,但文档告诉您不要这样做。(如果有人可以向我保证这将继续有效一段时间,我可能会倾向于选择这种替代方案。)

  2. 在语句后添加成员到类对象class:我的实际应用是派生一个QWidget带有动态创建的pyqtProperty类属性的PyQt4类。 QWidget不同寻常的是它有一个自定义元类。非常粗略地说,元类编译一个列表pyqtProperties并将其存储为附加成员。因此,创建后添加到类中的属性不起作用。澄清这个问题的一个例子:

从 PyQt4 导入 QtCore、QtGui


# 作品
类 MyWidget1(QtGui.QWidget):
    myproperty = QtCore.pyqtProperty(int)


# 不起作用,因为 QWidget 的元类无法“编译”myproperty
类 MyWidget2(QtGui.QWidget):
    经过
MyWidget2.myproperty = QtCore.pyqtProperty(int)

请注意,上述内容适用于大多数编程案例;我的案例恰好是那些不寻常的极端案例之一。

python pyqt python-3.x

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

从另一个线程使用va_list

我在一个小型嵌入式系统上使用FreeRTOS(newlib),发现printf和family浪费了大量的堆栈空间.我有很多任务,而且我没有足够的ram来使每个大的堆栈足以支持printf()调用.为了解决这个问题,我正在创建一个"printf服务器"任务,它将拥有一个大堆栈并代表其他任务执行所有printf().

所以我的问题是,将va_list传输到另一个线程(任务)的正确方法是什么?以下示例生成垃圾参数.

关于这是如何工作的快速说法:task_printf()将其参数填充到静态变量中,然后发出server_task信号以执行实际打印.当server_task完成时,它会通知客户端继续.

// printf parameters
static va_list static_args;
static const char *static_format;
static int static_result;


// printf server task.  Processes printf requests forever
void server_task(void *pvParameters)
{
    while(1)
    {
        xSemaphoreTake(printf_start, portMAX_DELAY);  // wait for start command
        static_result = vprintf(static_format, static_args);
        xSemaphoreGive(printf_finished);  // give finish signal
    }
}


// get server task to print something for us
int task_printf(const char *format, ...)
{
    int result;

    xSemaphoreTake(printf_mutex, portMAX_DELAY); // lock

    va_start(static_args, format);
    static_format = format;

    xSemaphoreGive(printf_start);  // give start signal
    xSemaphoreTake(printf_finished, …
Run Code Online (Sandbox Code Playgroud)

c printf variadic-functions freertos

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

放置新地址与原始内存地址

放置 new 的结果似乎总是与我提供给放置 new 的内存指针相同。对于 GCC,即使对于具有虚函数的类,这似乎也适用,例如......

#include <iostream>
#include <vector>

using namespace std;

class A
{
public:
    int a;
    virtual ~A() {}
};

int main()
{
    void *mem = malloc(sizeof(A));
    A* ptr = new(mem) A();

    cout << "sizeof(T) = " << sizeof(A) << endl;
    cout << "mem = " << mem << endl;
    cout << "ptr = " << ptr << endl;
    cout << "addr a = " << &(ptr->a) << endl;

    ptr->~A();
    free(mem);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个程序的输出是(注:64位linux)...

sizeof(T) = …
Run Code Online (Sandbox Code Playgroud)

c++ placement-new

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

具有寿命参数的特征意味着什么?

我了解生命周期参数如何应用于函数和结构,但是特征具有生命周期参数意味着什么?是将生命周期参数引入其方法的捷径,还是其他?

traits lifetime rust

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

如何使用“-with-rtsopts”转义多个参数

使用stack,您可以指定-with-rtsopts如下package.yaml

ghc-options:
- -with-rtsopts=-N
Run Code Online (Sandbox Code Playgroud)

然而,尚不清楚如何同时表示多个 rtsopt。在此示例中,我在它们两边加上了双引号

ghc-options:
- -with-rtsopts="-N -I0 -qg"
Run Code Online (Sandbox Code Playgroud)

...但这不起作用...

Preprocessing library for uke-0.1.0.0..
Building library for uke-0.1.0.0..
Preprocessing executable 'uke-exe' for uke-0.1.0.0..
Building executable 'uke-exe' for uke-0.1.0.0..
ghc: unrecognised flag: -qg"
Run Code Online (Sandbox Code Playgroud)

-with-rtsopts转义多个值的正确方法是什么package.yaml

haskell-stack

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

不能推子树分支

我有一个包含应用程序的git存储库,我想使用该repo的子目录来更新共享库存储库.我可以获取库repo,提交更新,但我无法将其提交回远程.它应该是一个快进的,但它说它不是.我究竟做错了什么?

$ git remote add lib goertzen@minerva:/pub/shared_git_repositories/lib.git

$ git fetch
From minerva:/pub/shared_git_repositories/lib
 * [new branch]      master     -> lib/master

$ git checkout -b libmaster lib/master
Branch libmaster set up to track remote branch master from lib.
Switched to a new branch 'libmaster'

$ git merge --squash -s subtree -X theirs master
Auto-merging lib.yaml
Squash commit -- not updating HEAD
Automatic merge went well; stopped before committing as requested

$ git commit -m "blah blah blah"
[libmaster 4949ef3] blah blah blah
 1 …
Run Code Online (Sandbox Code Playgroud)

git

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

带有原始指针的静态结构给出“`core::marker::Sync` 未实现...”

我正在尝试在 Rust 中创建一些将传递给 C 代码的静态数据结构。下面是一个无法编译的最小示例,我不知道在这种情况下错误意味着什么。所以问题是,为什么它会失败,我该如何解决?

pub struct MyStruct {
    pub name: *const str,
}

static mystruct: MyStruct = MyStruct {name: "why!!!\0"};

// src/lib.rs:52:29: 52:56 error: the trait `core::marker::Sync` is not implemented for the type `*const str`
// src/lib.rs:52 static mystruct: MyStruct = MyStruct {name: "why!!!\0"};
//                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

pointers ffi rust

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