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来做我想要的.
常规浮点文字不起作用:
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) 在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()
>>> 你好
>>> 再见
我已经注销的替代方案是:
使用locals():这在类语句中给出了一个可以写入的字典。这似乎适用于类,但文档告诉您不要这样做。(如果有人可以向我保证这将继续有效一段时间,我可能会倾向于选择这种替代方案。)
在语句后添加成员到类对象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)
请注意,上述内容适用于大多数编程案例;我的案例恰好是那些不寻常的极端案例之一。
我在一个小型嵌入式系统上使用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) 放置 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) 我了解生命周期参数如何应用于函数和结构,但是特征具有生命周期参数意味着什么?是将生命周期参数引入其方法的捷径,还是其他?
使用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?
我有一个包含应用程序的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) 我正在尝试在 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)