我正在编写一个基于命令行插件的程序,其中插件将在我提供的任何内容之外提供额外的功能.
例如,假设我编写了一个简单的脚本来解析图像并存储它们,这就是我所做的一切.然后其他人可以编写一组脚本来操作图像,将他的脚本放在一个插件中.
将加载插件,用户可以通过在命令行中指定其名称来访问插件.
脚本想要为用户提供其他选项的情况并不少见.因此,假设在某些年份,已经编写了20个不同的插件.
现在,所有作者都希望允许用户提供选项,因此主引擎应该采用用户的选项并将它们传递给插件,以便它可以根据需要处理它们.
为了保持统一,他们可能会同意某些选项应该执行类似的操作.像"-o name"一样,应将输出名称设置为"name".他们会继续实现他们自己的选项和东西,主引擎不知道(当然,它不应该知道插件做什么)
我正在使用不推荐使用的getopt模块,每当我指定一个未定义的选项时它就会抛出异常.我听说过optparse和argparse,但我不确定这些是否允许用户指定他想要的任何选项而不会抛出异常代码.
我该怎么做才能指定任何命令行选项?
谷歌云存储允许用户检查"公开共享?" 存储管理器中的字段,允许您直接共享数据的URL.
我正在使用谷歌应用引擎并将数据发送到存储,但我希望默认情况下公开共享.
我怎样才能做到这一点?除了手动操作外,他们的文档似乎没有提及任何相关内容.
我正在使用python,但它可能没有多大区别.
我正在解析一个包含如下行的文件
type("book") title("golden apples") pages(10-35 70 200-234) comments("good read")
我想把它分成不同的字段.
在我的示例中,有四个字段:类型,标题,页面和注释.
分裂后的期望结果是
['type("book")', 'title("golden apples")', 'pages(10-35 70 200-234)', 'comments("good read")]
很明显,简单的字符串拆分不起作用,因为它只会在每个空间分开.我想拆分空格,但保留括号和引号之间的任何内容.
我怎么能分开这个?
我不确定我写的代码是否有意义.这是一般的想法:
我有一个Parser类,它将采用不同类型的文档.根据类型,我将以不同方式解析文档.
所以假设我有两种类型的文档,A和B.如果我需要扩展程序来处理其他类型,工厂模式似乎是一个非常好的方法,所以我将有一个抽象类.
abstract class Parser
{
...
public void common_method() {
// something common that all parsers will use
// like file IO
}
// derived classes will override this
public abstract void specific_method();
}
class A_Parser : Parser
{
...
}
class B_Parser : Parser
{
...
}
Run Code Online (Sandbox Code Playgroud)
我想知道的问题是我在抽象的Parser中声明了抽象方法和非抽象方法.编译器似乎没有抱怨,它似乎仍然正常工作.
这不标准吗?也许有更好的方法来设计它?
int main()
{
unsigned long long key = 21739827982173982173921739217392173217397213271832193721973291732917321732132173971317382173213782163872163872163872163872163826176728328621321487219372198371298775647326409817402198732198432974329479832749173821732198732173217392173721372193728193782193792173921732171;
}
Run Code Online (Sandbox Code Playgroud)
编译器说我想要分配的数字对于所选类型来说太大了.如何存储然后执行操作?
我正在获取数据,给定一个URL,并尝试了这里描述的几个方法:如何使用Java从Internet下载和保存文件?
我们的下载速度至少为2 MB/s,因此看到文件以56 KB/s的速度下载有点不舒服.使用浏览器,我们可以在几秒钟内获取50 MB文件,但使用上述方法需要几分钟.
我怎样才能利用我们快速连接的事实?我正在开发的应用程序远程获取数据以进行每日更新,并且数据通常在10-100 MB范围内,因此如果我们能够快速执行更新例程将会很好.
我有一个泛型Person类,两种类型的人,Student并Teacher扩展了Person类.我还有教学课程,将存储学生名单和将在该课程中的教师名单.
class Person {}
class Student extends Person {}
class Teacher extends Person {}
class Session {
List<Student> students = new ArrayList();
List<Teacher> teachers = new ArrayList();
// add a person to the teaching session.
// They should be placed into the appropriate lists
public void enroll(Person p)
{
if (p instanceof Student)
students.add((Student) p)
else if (p instanceof Teacher)
teachers.add((Teacher) p)
}
}
Run Code Online (Sandbox Code Playgroud)
这个想法是,其他一些代码将有一个人员列表,并根据需要迭代列表以将其注册到适当的会话中.但是,该enroll方法当前显式检查对象的类型,这对我来说是不可取的,看起来像是糟糕的设计.
我尝试enroll使用方法重载编写这样的方法,看起来更干净
public void …Run Code Online (Sandbox Code Playgroud) 我有一个名为"保存更改"的按钮,如果在JTextField组件中检测到任何更改,它将保存所有更改.现在,我假设如果用户键入任何内容,则内容已更改.
我正在使用KeyListener,但从这个问题来看,它听起来像使用除了ActionListener错误之外的任何东西?
我怎样才能让孩子忽视其父母认为有趣的东西,直接去看祖父母的乐趣?
孩子仍然继承父母,但它只是不同意几种方法.
调用超类的超类方法?
此外,如果我的孩子不同意其父母但同意父母的父母,那么它是否被认为是糟糕的设计?
class Grandparent
def fun
#do stuff
end
end
class Parent < Grandparent
def fun
super
#parent does some stuff
end
def new_business
#unrelated to my parent
end
end
class Child < Parent
def fun
super
#child also does some stuff
end
def inherit_new_business
new_business
#stuff
end
end
Run Code Online (Sandbox Code Playgroud) 基本上我正在使用2D矩阵.我可以通过指定(x,y)对来获取矩阵的元素,以获得该位置的相应值.
现在,我还希望能够跟踪在运行时任意确定的某些对.例如,我可能需要跟踪(1,2),(3,4)和(5,6)处的值,也许我需要经常检索该位置的值.
所以我在考虑如何制作哈希.
liked_elements = {[1,2] => M[1,2], [3,4] =>M[3,4], [5,6]=>M[5,6]}
或类似的东西.
然后我可以快速迭代哈希并获得我喜欢的元素.
使用数组作为哈希键是否有任何问题?