我有一个具有以下布局的对象:
class Obj1(object):
def __init__(self, user, password, items=None):
self._user = user
self._password = password
self._items = items
def add_items(self, item):
self._items.append(item)
def has_changed(self, obj2):
return self != obj2
Run Code Online (Sandbox Code Playgroud)
现在我做以下事情:
obj1 = Obj1('me', '1234')
obj1.add_item({'name':'george', 'progress':'70'})
#obj2 = obj1 #wont work since they would point to same object
obj2 = copy.copy(obj1)
obj1.add_item({'name':'monica', 'progress':'86'})
print obj2.has_changed(obj1)
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,这让我失意.有人能指出我在这里缺少的东西吗?
这可能是一个非常基本的问题,但我是C的新手,所以请耐心等待.
我正在阅读一些用C编写的固件的文档,我遇到了这个:
typedef struct {
int x;
int arr[10];
} sx;
Run Code Online (Sandbox Code Playgroud)
然后我有一个函数,其中传递指向该类型的指针.
int f(sx xtype *sp, int i){
return sp -> arr[i];
}
Run Code Online (Sandbox Code Playgroud)
我不确定两件事情在哪里:从我的Java经验来看,我认为第一个片段相当于一个类似于Java中的Object类的超类,然后第二个片段使用了sx的子类.但是我不确定.有人可以确认吗?从我迄今为止的小C经验来看,我认为更容易理解的方法是将指针传递给类型如下:
typedef struct xtype {
int x;
int arr[10];
} sx;
int f(sx *sp, int i){
return sp -> arr[i];
}
Run Code Online (Sandbox Code Playgroud)
但我只是怀疑我从这张照片中遗漏了一些东西.提前致谢!
根据我的 Java 经验,掌握这一点并不难。
一个非常简单的函数:
void update(float * p,float value)
{
*p = value;
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨identifier p is undefined.
我认为*p会取消引用指针并在其中存储值。
我正在使用 ST 板生成一个简单的乐器。基本上我有一个传感器,可以检测运动或空间角度,并根据角度产生不同音高和音量的声音。我已经有了音频编解码器的驱动程序,所以我需要做的就是生成声音样本并将样本提供给它。现在我能够从传感器获得角度读数,但具有挑战性的部分是如何产生声音。到目前为止,从谷歌搜索来看,我认为我需要根据传感器的读数生成一个频率和幅度(音量)设置的正弦函数。但是我的编解码器假设采样率为 0f 48KHz,那么我将如何为固定采样率生成具有不同频率的正弦曲线?
到目前为止,我已经这样做了:
samplingRate = 48000;
n = 0; // reset once there is a change in frequency
// this function is called 48000 times a second
int generateSineWave(float frequency, float volume)
{
int temp = volume*(sin(2*pi*frequency*n);
n = n + 1;
if (n == samplingRate) {
n = 0;
}
if (abs(temp) > MAXVAL) {
return ERROR_CODE;
}
return temp;
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效(我听到了一些声音),但我不确定它是否生成了正确的频率正弦曲线。我听到的声音也不是很悦耳,我将如何产生复杂的音调(例如钢琴中的音调)?我想我的控制变量(空间角度)也需要低通滤波。但除此之外,关于如何产生更令人愉悦的波浪的任何想法?
我遇到了这种语法,不确定它的含义.
for( ; ; )
{
//do stuff like read from a handle etc.
}
Run Code Online (Sandbox Code Playgroud)
我仍然在C的学习曲线上,所以如果你想要这是一个蹩脚的问题,请投票.
我有以下内容structs:
typedef struct stack {
void* ss_sp;
size_t ss_size;
// ...
} stack_t;
typedef struct ucontext {
ucontext_t* uc_link;
stack_t uc_stack;
// ...
} ucontext_t;
typedef struct mythread_type {
ucontext_t context;
int ID;
int status;
} mythread_t;
Run Code Online (Sandbox Code Playgroud)
现在我有一个数组如下:
mythread_t mythreads[100];
Run Code Online (Sandbox Code Playgroud)
我想避免使用
mythreads[0].context.uc_stack.ss_size
Run Code Online (Sandbox Code Playgroud)
出于可读性的原因.
现在我想知道以下两个代码块是否相同:
块1
ucontext_t c=mythreads[0].context;
getcontext(&c);
c.uc_stack.ss_size=1024;
c.uc_stack.ss_sp=malloc(1024);
Run Code Online (Sandbox Code Playgroud)块2
ucontext_t* c=&(mythreads[0].context);
getcontext(c);
(c->uc_stack).ss_size=1024;
(c->uc_stack).ss_sp=malloc(1024);
Run Code Online (Sandbox Code Playgroud)我想要的是mythreads[0]堆栈的上下文分配1024个字节.
我有一个我正在接收执行Web服务调用的对象列表.
List<ProcessInstances> list = processService.GetProcessInstances(id);
Run Code Online (Sandbox Code Playgroud)
我想在列表的每个成员上调用一个函数.我可以使用For循环,但我想使用linq查询,因为我将在我的代码中执行此操作(从Web服务中读取)很多次.到目前为止,我有,
list.Select(obj => GetProcessedParameters(obj.Id));
//GetProcessedParameters(int id) does some lookup and validation based on the id.
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误,说明类型不被识别.为什么它会给我一个错误?我怎么做到这一点?提前致谢!
我在超类中有一个受保护的方法.
package com.pts.filter
public class a {
...
protected Filter callFilter(Object aInParam) {
return Filter.LowPass;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在扩展课程.
package com.pts.filter.image
public class b extends a {
...
@Override
protected Filter callFilter(Object aInParam) {
...
return Filter.LowPass;
}
}
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误,说" 类型b的方法callFilter必须覆盖或实现超类型方法 ".我正在扩展类a所以我不明白为什么它没有看到超类型方法.是因为我试图覆盖的方法受到保护吗?从我的理解,受保护的方法在子类中可见.
我有一个基类,我定义了一个静态变量.从这篇文章中我知道扩展基类的每个类都将具有类变量(静态变量)的相同副本.有没有办法让每个扩展类都拥有自己的"类变量副本"?我尝试声明基类摘要但没有运气.
public abstract class BaseBlah{
private static int number_of_threads;
}
public class Blah1 extends BaseBlah{
}
public class Blah2 extends BaseBlah{
}
Run Code Online (Sandbox Code Playgroud)
我的情况比示例稍微复杂一些,因为我希望每个扩展类抽象一个在其专用线程池中执行的常见任务类型,在这种情况下是类变量.
我有以下java类,它具有实例变量属性作为声明类时传递的泛型类型.
当我尝试将属性传递给它作为方法参数时,如果我更改参数本身的值,它似乎不会更改其值.
码:
public class BST<T extends Comparable<T>, S>{
private Node<T, S> bstRoot;
public Node<T,S> getRoot() {
return bstRoot;
}
public void setRoot(Node<T,S> root) {
this.bstRoot = root;
}
public boolean put(T key, S value){
Node<T,S> node = new Node<T,S>(key, value);
return put(node, bstRoot);
}
private boolean put(Node<T,S> node, Node<T,S> root){
if(root == null){
root = node;
}
else{
if(root.compareTo(node) < 0){
put(node, root.getRightChild());
}
else{
put(node, root.getLeftChild());
}
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作时:
public class BSTTest {
public …Run Code Online (Sandbox Code Playgroud)