我正在寻找以下模式.(我在Perl工作,但我不认为语言特别重要).
父母班Foo,儿童Bar,Baz,Bazza.
构造Foo的方法之一是解析字符串,该字符串的一部分将隐式指定要创建的类.因此,例如,如果它开始'http:'那么它是一个Bar,但如果它没有,但它包含'[Date]',那么Baz喜欢它,依此类推.
现在,如果Foo知道它的所有子节点,以及什么字符串是Bar,什么是Baz等,它可以调用适当的构造函数.但基类不应该对其子女有任何了解.
我想要的是Foo的构造函数能够依次尝试它的孩子,直到其中一个人说"是的,这是我的,我会创造的东西".
我意识到在一般情况下这个问题没有明确定义,因为可能有多个子接受字符串,因此调用它们的顺序很重要:忽略它并假设字符串的特征这样只有一个子类会喜欢这个字符串.
我提出的最好的方法是让子类在初始化时"注册"基类,以便获取构造函数列表,然后循环它们.但是,我有一个更好的方法吗?
示例代码:
package Foo;
my @children;
sub _registerChild
{
push @children, shift();
}
sub newFromString
{
my $string = shift;
foreach (@children) {
my $object = $_->newFromString(@_) and return $object;
}
return undef;
}
package Bar;
our @ISA = ('Foo');
Foo::_registerChild(__PACKAGE__);
sub newFromString
{
my $string = shift;
if ($string =~ /^http:/i) {
return bless(...);
}
return undef;
}
Run Code Online (Sandbox Code Playgroud) 快问你的问题.我希望能够创建一个对象的实例.对象类型基于字符串.
在php中你可以用一个字符串替换类名,但是我怀疑它在Objective c中是那么容易.
NSString * className;
id theObject;
className = @"TestObject";
theObject = [[className alloc] init];
Run Code Online (Sandbox Code Playgroud)
这是对它可能的样子的分解.我想尝试避免使用巨大的案例风格声明.
是否可以使用选择器系统?
有任何想法吗?
干杯
我想创建一个像C:\sample\sample1\hello.py. 它应该自动创建从sampleto的完整路径hello.py,以及它们之间的所有目录。这在 Python 中可能吗?
所以我知道如何使用.wrap,.wrapInner并.wrapAll但我想知道如何使用jQuery的1.4中引入了快速创建语法和包装功能在一起.
基本上我希望能够使用
var targetUl = $(this), // would be populated by script
maxWidth = 1400; // would be populated by script
$('<div />', {
'id':'wrap',
'css': {
'width': maxWidth,
'overflow':'hidden'
}
}).wrapAround(targetUl);
Run Code Online (Sandbox Code Playgroud)
有点像这种.appendTo方法有效,但包装的东西......
可以这样做吗?
谢谢.
给定一个Foo myFoos列表,我需要将它们映射到另一个类的集合,比如Bar.我现在这样做:
List<Bar> myBars = new...
for(Foo f : foos) {
Bar b = new Bar();
b.setAProperty(f.getProperty);
b.setAnotherProp(f.getAnotherProp);
myBars.add(b);
}
Run Code Online (Sandbox Code Playgroud)
那么,有更简单的方法吗?这很简单,但我想知道是否有任何魔法可以将foos变形为条形而无需手动遍历列表,特别是因为我的输入列表可能很大.
如果没有,你们知道编译器是否做了什么来优化它?我主要担心的是表现.
谢谢!
-
Llappall
我有一个rails 3.1 app with devise:
现在我想补充一下:
我该怎么做?我尝试了几个想法,也来自堆栈溢出,但似乎无法让它工作.我尝试嵌套属性,这是不行的方法,这样做会在用户注册时在数据库中创建一个配置文件记录,插入名字和姓氏
我的注册#new view:
= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
= devise_error_messages!
= f.input :username, :label => 'Username'
= f.input :email, :label => 'Email'
= f.input :password, :label => 'Password'
= f.input :password_confirmation, :label => 'Password confirm'
// start fields for profile
= f.fields_for :profile do |f|
= f.label :bod_day
= f.text_field :bod_day
// end fields for profile
= f.button :submit, t(:submit, :scope …Run Code Online (Sandbox Code Playgroud) 我有这个jquery脚本:
$('#add').click(function(){
$('<div class="drag" style="left:20px;"/>')
.text( num++ )
.appendTo( document.body )
.css({
top: $( window ).height() - 500 ,
left:$( window ).width() - 500
});
});
Run Code Online (Sandbox Code Playgroud)
这将创建: <div class="drag" style="left:20px;"/></div>
我有兴趣创建的是:
<div class="drag" style="left:20px;"/>
<div class="handle SE">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
...
$('<div class="drag" style="left:20px;"/><div class="handle SE">')
.text( num++ )
...
Run Code Online (Sandbox Code Playgroud)
jquery将创建2个单独的di'vs而不是嵌套.
有任何想法吗?
谢谢
我正在从数据框中获取列并使用它们来创建另一个数据框,但名称不断变得混乱,而不是保留原始名称.我该如何避免这种情况?
> newDigit1 <- data.frame((security_id = rsPred1$security_id))
> head(newDigit1)
X.security_id...rsPred1.security_id.
1 1
2 6
3 5
4 3
5 3
6 2
Run Code Online (Sandbox Code Playgroud)
它应该是这样的:
> newDigit1 <- data.frame((security_id = rsPred1$security_id))
> head(newDigit1)
security_id
1 1
2 6
3 5
4 3
5 3
6 2
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个目录并将文件复制到它.我实现的代码及其输出如下.问题似乎是不言自明的,但我会明确地告诉那些无法分辨的人.
无论我做什么,我似乎无法创建复制文件所需的目标文件.
get是要复制的文件,是要复制到dest的目录.ERR>为清楚起见,添加了行号和" ".我已经注释了我尝试过的其他文件创建方法,但它们都失败了.
115: private void copyTo(File get, File dest)
116: {
117: try
118: {
119: dest = new File((dest.getPath().endsWith(File.separator) ? dest.getPath() : dest.getPath() + File.separator) + get.getName());
120:
121: java.io.FileInputStream fis = new java.io.FileInputStream(get);
122: if (dest.exists())
123: while(!dest.delete());
124: dest.mkdir();
125:// dest.createNewFile();
126:// java.io.FileWriter w = new java.io.FileWriter(dest);
127:// w.write("");
128: System.out.println("Writing \"" + get + "\" to \"" + dest + "\"");
129:ERR> java.io.FileOutputStream fos = new java.io.FileOutputStream(dest); …Run Code Online (Sandbox Code Playgroud) 我是新手,所以请跟我一起软=)
我正在尝试在LISP中开发一个脚本(抱歉,没有其他语言)来创建位图文件.我在不同的网站上关于位图格式,但我关心的是程序本身.
使用LISP,(和perl/awk,我的环境是Linux RHEL5)我只能创建一个带有"常规"ASCII码的文本文件(我的意思是可打印/可显示).
我的问题是关于不可打印的字符.例如,如果我想在十六进制链00 00 00 00中放入位图头,那么相应的ASCII代码是什么?
我怎么能在文件中打印它们?
非常感谢您的帮助和澄清!
最好,
P-CHAN
creation ×10
class ×2
file ×2
java ×2
jquery ×2
bitmap ×1
collections ×1
common-lisp ×1
constructor ×1
dataframe ×1
devise ×1
element ×1
inheritance ×1
ioexception ×1
lisp ×1
nested ×1
objective-c ×1
perl ×1
profile ×1
python ×1
r ×1
registration ×1
word-wrap ×1
wrapper ×1