SystemVerilog添加了包以提供公共代码段(函数,类型,常量等)的命名空间.但由于软件包未实例化,因此无法对其进行参数化,因此处理参数化成员是有问题的.在实践中,我发现这是非常有限的,因为我的自定义类型通常有一些参数指示字段宽度等.
我通常通过使用带有默认值的参数处理这个问题,并且只是理解我需要返回更改某些应用程序的包源代码,这对我来说似乎非常错误.但我还没有找到一种方法来更清洁地处理这个问题.例如:
package my_pkg;
parameter ADDR_MSB = 7;
parameter DATA_MSB = 31;
typedef struct {
logic [ADDR_MSB:0] address;
logic [DATA_MSB:0] data;
} simple_struct_t;
endpackage
Run Code Online (Sandbox Code Playgroud)
有没有人找到一个更清洁的方式处理这个?我很乐意听到它,因为我认为软件包是SV的一个非常强大的补充,可以实现更安全的代码重用,但这种限制非常严重.
我在编译时遇到了麻烦.我不明白编译器抛出的错误.一些代码来说明问题如下.
#include <map>
using namespace std;
class Thing
{
public:
Thing(int n):val(n) {}
bool operator < (const Thing& rhs) const
{
return val < rhs.val;
}
int getVal() { return val; }
private:
int val;
};
int main(int argc, char* argv[])
{
std::map<Thing, int> mymap;
Thing t1(1);
Thing t2(10);
Thing t3(5);
mymap[t1] = 1; // OK
mymap.insert(t1); // Compile error
}
Run Code Online (Sandbox Code Playgroud)
现在编译错误消息:
test.cpp:在函数'int main(int,char**)'中:test.cpp:34:错误:没有用于调用'std :: map,std :: allocator >> :: insert(Thing&)的匹配函数'/usr/include/c++/4.4/bits/stl_map.h:499:注意:候选者是:std :: pair,std :: _ Select1st>,_ Compare,typename _Alloc :: rebind> …
有没有办法在C#中"导入"静态类,比如System.Math?
我已经包括了一个比较.
Imports System.Math
Module Module1
Sub Main()
Dim x As Double = Cos(3.14) ''This works
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)
VS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Math; //Cannot import a class like a namespace
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
double x = Math.Cos(3.14);
double y = Cos(3.14); //Cos does not exist in current context
}
}
}
Run Code Online (Sandbox Code Playgroud) 每当我定义一个新的异常时,我倾向于做两件事之一:
Netbeans不喜欢它,当我在同一个文件中定义公共异常时,如第2点中的另一个类.虽然我还没有尝试过,但我相信它会因为类似的原因而对我大喊大叫同一文件中的多个异常与第1点中的异常相同.
每个异常应该有自己的文件,还是Netbeans会接受其他一些风格?我是Java和Netbeans的新手,我很想知道合适的风格是什么.
默认的winAPI应用程序没有双缓冲.相反,它确实能够确保只绘制需要绘制的内容,并使其具有无缝外观.但是,当您调整窗口大小时,需要重新绘制整个窗口,这会导致控件,选项卡上的背景以及选项卡的白色之间出现闪烁.
所以我的问题是,在我的应用程序中支持双缓冲的最简单方法是什么?
Objective-J直接在浏览器上编译/转换为JavaScript.(这与在服务器上执行此操作形成对比,正如GWT对Java所做的那样.)这种方法是否已针对除Objective-J之外的任何语言实现?
我可以强制窗口重新评估其所有绑定和验证吗?
出于某种原因,似乎在一个奇怪的情况下忽略了INotifyPropertyChanged.PropertyChanged,我正在寻找一种解决方法,直到找到真正的原因.
我将一个对象数组传递给jQuery模板(官方jquery-tmpl插件):
$("#itemTmpl").tmpl(items).appendTo("body");
<script id="itemTmpl" type="text/x-jquery-tmpl">
<div class="item">Name: ${name}, Index: ${???}</div>
</script>
Run Code Online (Sandbox Code Playgroud)
在模板中显示项目索引的最简单方法是什么?优选地,不使用分离的外部函数,而不改变传递的对象结构,并且不改变模板结构(转换为{{each}}).是否有任何内置变量可能存储当前数组索引?
我只是"想"我理解导入和模块是如何工作的,但显然我需要更多的学校教育.
这是一个示例程序(只是一个测试案例,我正在做的事情,范围和规模要大得多)和一个模块:
quick.py
import gtk
from quick_window import *
w.show_all()
gtk.main()
Run Code Online (Sandbox Code Playgroud)
quick_window.py
w = gtk.Window()
w.connect('destroy', lambda w: gtk.main_quit())
l=gtk.Label('Hello')
w.add(l)
Run Code Online (Sandbox Code Playgroud)
我跑了
$ python quick.py
Traceback (most recent call last):
File "quick.py", line 2, in <module>
from quick_window import *
File "/home/woodnt/Dropbox/python/weather_project/plugins/quick_window.py", line 3, in <module>
w = gtk.Window()
NameError: name 'gtk' is not defined
Run Code Online (Sandbox Code Playgroud)
为了使它工作,我还必须在模块中导入(呃,重新导入)gtk,如下所示:
import gtk
w = gtk.Window()
w.connect('destroy', lambda w: gtk.main_quit())
l=gtk.Label('Hello')
w.add(l)
Run Code Online (Sandbox Code Playgroud)
我为什么要多次导入gtk?这是否意味着我在内存中有2个"gtk's"?
我是否必须在该模块中导入我需要的每个模块中的所有内容?
我知道每个模块都有自己的命名空间,但我认为它还继承了"全局",包括来自调用程序的导入模块.
我一直认为from module import*就像将代码剪切并粘贴到该位置一样.还有另一种方法吗?
非常感谢帮助.
Narnie
关于应用架构的小问题:
我有一个python脚本,作为守护进程运行.
在里面我有很多对象,都是从一个类继承的(让我们把它命名为'entity')
我还有一个主要对象,让它成为'topsys'
实体由pair(id,type(= class,粗略))标识,并且它们以许多邪恶的方式连接.它们也一直在创建和删除,并且需要访问其他实体.
所以,我需要一种存储,基本上是字典词典(每种类型一个),包含所有实体.
问题是,更好的是:将这个字典作为对象属性或类实体附加到'topsys',作为类的属性?我会选择第二个(所以实体不需要知道'topsys'的存在),但我不喜欢直接在类中使用属性.或许还有另一种方式?
c++ ×2
import ×2
python ×2
binding ×1
c# ×1
class-design ×1
coding-style ×1
exception ×1
java ×1
javascript ×1
jquery ×1
module ×1
netbeans ×1
objective-j ×1
stl ×1
using ×1
vb.net ×1
verilog ×1
winapi ×1
wpf ×1